ios - 当应用程序进入后台时,约束会重置 - iOS 13

标签 ios swift iphone ios13 swift5

我已经正常设置了 View 的前导、尾随约束。我已将其高度设置为静态 325。对于底部约束,我设置了 2 个约束 1. 将主视图的底部约束设置为 View 的底部约束。 2. 主视图的底部约束到 View 的顶部约束。现在,根据用户的操作,我仅显示带有动画的隐藏 View 。因此,当 View 显示在屏幕上并且应用程序进入后台时, View 的约束会自动更改并且 View 会被隐藏。此问题仅发生在 iOS 13 设备中。

我尝试更新其对 viewWillAppear() 的约束,但在 iOS 13 中,当从后台激活应用程序时,也不会调用 ViewControllers 的 viewWillAppear。另外,我认为这不是更新约束的好主意。

Storyboard

Class File

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状态。

enter image description here

关于ios - 当应用程序进入后台时,约束会重置 - iOS 13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58376388/

相关文章:

ios - 如何通过函数格式化TextField输入字符串?

ios - UILabel 中的 NSAttributedString 是否会忽略标签的 numberOfLines 属性?

objective-c - 在 iPhone 上使用 NSMethodSignature(具有 Obj-C 2.0 属性)

iphone - 应用程序在模拟器上崩溃。适用于 iPhone 设备

ios - 如何从其子类正确访问父类(super class) View Controller 的 IBOutlet 属性?

iphone - 根据该单元格中数据的属性值仅删除特定的 UITableViewCell

ios - QuickLook 不显示仅以文件名作为标题的 pdf 灰色屏幕

swift - 无法使用类型为 'validate' 的参数列表调用 '(delegate:viewController)'

swift - 如何将http请求打印到控制台

iphone - 如何绘制不同字体大小的PDF文件?