Constraints resets when app is going in background - iOS 13(当应用程序在后台运行时,约束重置-iOS 13)
问题描述
我正常设置了视图的前导约束和尾随约束。我已将其高度设置为静态325。对于底部约束,我设置了两个约束:1.将主视图底约束设置为视图底约束。2.使用主视图的底部约束到视图的顶部约束。现在,在用户的操作上,我只用动画显示隐藏视图。因此,当视图显示在屏幕上,应用程序进入后台时,视图的约束会自动更改,视图会被隐藏。此问题仅在iOS 13设备中出现。
我试图更新其对viewWillspecar()的约束,但在iOS 13中,当应用程序从后台激活时,也不会调用ViewController的viewWillspecar。我也不认为这是更新约束的好主意。
class ViewController: UIViewController {
@IBOutlet weak var topConstraint: NSLayoutConstraint!
@IBOutlet weak var bottomConstraint: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) {
self.topConstraint.isActive = false
self.bottomConstraint.isActive = true
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}
}
}
我不希望在应用程序状态从前台更改为后台时更改或更新我的约束,反之亦然。
请帮我解决这个问题。
TIA
推荐答案
也遇到了此问题。请注意,如果没有在界面生成器中选中Installed
,约束将保持重置状态。因此,作为解决办法,将所有约束Installed
保留在IB中,并仅在代码中更改isActive
状态。
这篇关于当应用程序在后台运行时,约束重置-iOS 13的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!