我遇到了使用大小类的约束的问题。
在故事板中,我将视图的宽度约束设置为紧凑宽度和常规宽度尺寸类的不同值。在视图控制器中,我有一个对该约束的引用,我在viewDidLoad()
内将其常量设置为零。
我遇到的问题是约束的常量会恢复到故事板值,除非调用viewDidAppear()
之后。在那之后,约束常量保持在我在源代码中设置的任何值。
即使在约viewWillAppear()
内将约束常量设置为零,仍会导致约束恢复为故事板值。
我可以从故事板中删除约束并在代码中执行,但我想知道是否有人对于为什么会发生这种情况有任何其他想法,如果有一个修复不涉及必须删除来自故事板的约束。
答案 0 :(得分:1)
我猜autolayout使用默认约束将所有内容排除在外,然后在视图出现之前将所有内容重新排出,以计算大小类。这就是约束“恢复”的原因 - 它实际上只是第一次被设置为size类的正确值。
无论如何,在修改约束之前在view.layoutIfNeeded()
内调用viewDidLoad()
解决了问题。
答案 1 :(得分:0)
这是一种预期的行为,因为viewDidLoad()
时未知视图宽度