当应用程序在后台运行时,约束重置-iOS 13

Constraints resets when app is going in background - iOS 13(当应用程序在后台运行时,约束重置-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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:当应用程序在后台运行时,约束重置-iOS 13

基础教程推荐