可以说我在设计时为标签设置了一个约束,并且没有任何引用可以稍后修改。假设我在设计时设置了x和y位置约束。呈现此控件时,如果我通过使用frame.origin.x和frame.origin.y为x和y设置不同的值怎么办。这是否会超越我在设计时设置的约束,否则约束会胜过此约束?
答案 0 :(得分:0)
我真的不了解您对“设计时间约束”的理解,但这是约束如何工作的一般机制(而行为完全取决于视图的autoresizing mask setting):
translatesAutoresizingMaskIntoConstraints == false
⇒设置视图框架没有任何效果,因为在下一个布局遍中,它将被您的约束所覆盖。
translatesAutoresizingMaskIntoConstraints == true
⇒设置视图的框架会在幕后添加多个约束,以强制视图具有框架的大小和位置。但是,重要的是要知道,在这种情况下,您不应在视图中添加任何其他约束,因为它们将与“框架约束”冲突。
如果您想了解详细信息,请查看▶️ this talk。
不久前,我还在very granular explanations on the autoresizing mask上发表了一篇有关中型的文章,该文章可能与您的问题非常相关(滚动到停用自动版式部分)。
注意: 有一种方法使约束仅在设计时影响布局。您只需在Interface Builder中选择约束,然后选中 Placeholder 复选框。
但是据我所知,这不是您在说什么。