在代码中更改大小分类约束的常量,但它恢复为情节提要值
Changing constant of a size-classed constraint within code but it reverts back to storyboard value
我 运行 遇到了使用大小 类 的约束的问题。
在故事板中,我将视图的宽度约束设置为紧凑宽度和常规宽度大小的不同值 类。在视图控制器中,我有一个对该约束的引用,我在 viewDidLoad()
.
中将其常量设置为零
我遇到的问题是约束的常量恢复为情节提要值,除非在调用 viewDidAppear()
之后。在那之后,约束常量保持在我在源代码中设置的任何值。
即使在 viewWillAppear()
内将约束的常量设置为零仍然会导致约束恢复到情节提要值。
我可以从情节提要中删除约束并在代码中执行此操作,但我想知道是否有人对发生这种情况的原因有任何其他想法,以及是否有不涉及必须删除的修复来自故事板的约束。
这是预期的行为,因为在 viewDidLoad() 中不知道视图宽度
查看此相关回答
我想自动布局会使用默认约束布置所有内容,然后在视图出现之前再次布置所有内容,考虑大小 classes。这就是约束“恢复”的原因 - 它实际上只是第一次被设置为大小 class 的正确值。
无论如何,在修改约束之前在 viewDidLoad()
内调用 view.layoutIfNeeded()
解决了问题。
我 运行 遇到了使用大小 类 的约束的问题。
在故事板中,我将视图的宽度约束设置为紧凑宽度和常规宽度大小的不同值 类。在视图控制器中,我有一个对该约束的引用,我在 viewDidLoad()
.
我遇到的问题是约束的常量恢复为情节提要值,除非在调用 viewDidAppear()
之后。在那之后,约束常量保持在我在源代码中设置的任何值。
即使在 viewWillAppear()
内将约束的常量设置为零仍然会导致约束恢复到情节提要值。
我可以从情节提要中删除约束并在代码中执行此操作,但我想知道是否有人对发生这种情况的原因有任何其他想法,以及是否有不涉及必须删除的修复来自故事板的约束。
这是预期的行为,因为在 viewDidLoad() 中不知道视图宽度
查看此相关回答
我想自动布局会使用默认约束布置所有内容,然后在视图出现之前再次布置所有内容,考虑大小 classes。这就是约束“恢复”的原因 - 它实际上只是第一次被设置为大小 class 的正确值。
无论如何,在修改约束之前在 viewDidLoad()
内调用 view.layoutIfNeeded()
解决了问题。