我已经正常设置了 View 的前导、尾随约束。我已将其高度设置为静态 325。对于底部约束,我设置了 2 个约束 1. 将主视图的底部约束设置为 View 的底部约束。 2. 主视图的底部约束到 View 的顶部约束。现在,根据用户的操作,我仅显示带有动画的隐藏 View 。因此,当 View 显示在屏幕上并且应用程序进入后台时, View 的约束会自动更改并且 View 会被隐藏。此问题仅发生在 iOS 13 设备中。
我尝试更新其对 viewWillAppear() 的约束,但在 iOS 13 中,当从后台激活应用程序时,也不会调用 ViewControllers 的 viewWillAppear。另外,我认为这不是更新约束的好主意。
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
最佳答案
也遇到这个问题了。请注意,如果未在 Interface Builder 中检查Installed
,约束会不断重置。因此,作为解决方法,请将所有约束Installed
保留在IB中,并仅在代码中更改isActive
状态。
关于ios - 当应用程序进入后台时,约束会重置 - iOS 13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58376388/