gpt4 book ai didi

ios - 激活/停用方向变化的约束

转载 作者:行者123 更新时间:2023-11-28 11:10:46 26 4
gpt4 key购买 nike

我没有得到它的工作,我不知道为什么......遗憾的是其他问题 + 答案没有帮助。

测试设备:
iPhone 6
iPad 2

相关代码:

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator){
updateConstraints()
}
override func viewWillLayoutSubview() {
updateConstraints()
}

func updateConstraints() {
if UIDevice.currentDevice().orientation.isLandscape {
NSLayoutConstraint.activateConstraints(layoutLandscape!)
NSLayoutConstraint.deactivateConstraints(layoutPortrait!)
}
else {
NSLayoutConstraint.activateConstraints(layoutPortrait!)
NSLayoutConstraint.deactivateConstraints(layoutLandscape!)
}
view.layoutIfNeeded()
}

layoutLandscape 和 layoutPortrait 是约束数组。

确实有效的情况:
- iPad 加载 View 、纵向和横向
- iPad 旋转 View ,纵向和横向
- iPhone 加载 View 、纵向和横向
- iPhone 旋转 View ,仅横向 -> 纵向

无效:
- iPhone 纵向 -> 横向

当我在 Storyboard 中激活肖像作为默认设置时,iPhone 旋转就是这样工作的。如果我将其更改为横向约束,则纵向 -> 横向有效,而另一个则无效。

错误消息(也没有真正帮助......)只是我打破了一些限制(很多,很难缩小范围),但后来我想知道为什么当我在 iPhone 上加载两个方向的 View 。
为什么它完全适用于 iPad?它不像那个东西比 iPhone 或类似的东西有更高的分辨率。

谢谢:)

最佳答案

当您激活布局约束时,会立即检查它们是否与其他约束冲突。如果是这样,则有些已损坏,即已删除。

在您的代码中,这可能会发生,因为您首先激活了约束,此时您有太多相互冲突的约束。

因此,第一种方法是先停用不再相关的,然后再激活新的(而不是反过来)。

另一种据说更有效的方法是不激活和停用约束,而是将当前相关的优先级设置为 999,将不相关的优先级设置为 1。 (注意:是 999 而不是 1000。)

关于ios - 激活/停用方向变化的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35289071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com