自动布局混合代码和界面生成器

Posted

技术标签:

【中文标题】自动布局混合代码和界面生成器【英文标题】:Autolayout mixing code and interface builder 【发布时间】:2013-09-24 23:37:49 【问题描述】:

我想在我的项目中使用自动布局

理想情况下,我希望在 xib 中“预先安排”我的视图大约位置和高度以及所有出口和操作给主人。

然后我想在 - viewDidLoad addConstraints 到所有视图,以便它们重新排列

这是一个很好的解决方案吗?我应该如何设置 xib 以使用自动布局?我应该在设置自己的约束之前删除所有约束吗?

感谢任何建议

【问题讨论】:

出于好奇,如果您遇到了设置视图的麻烦,为什么不直接在 IB 中设置约束呢?在某些特殊情况下您可能会这样做,但它们相当不寻常。为什么不在 IB 中设置约束?这样做通常要容易得多。 解决什么问题的好方法?我和 Rob 在一起,你应该在 IB 中设置它们,除非你试图做一些在那里无法完成的事情。如果您确实在代码中添加了自己的代码,是的,您通常必须删除您在 IB 中设置的那些(或至少修改常量值)。 老实说,我不太喜欢界面生成器。似乎对于复杂的视图,我会点击自己死亡:) 我讨厌总是试图点击那些 1px 的线条。我喜欢用于快速模拟的界面构建器,但我更喜欢对视图进行编码。我并不是说它的好方法,但这就是我问这个问题的原因,而你的 cmets 实际上是他们让我思考的。附言在 IB 中,很多约束对我来说似乎是一团糟:) 【参考方案1】:

我建议执行以下操作:

在 IB 中设置所有必要的约束。 为您需要动态更改的约束创建出口(如果您正在尝试这样做) 在您的 viewDidLoad 方法中访问这些插座并更改值

这样您就可以两全其美。您获得最初设置所有布局的 UI,然后您可以在运行时对其进行调整。

【讨论】:

谢谢!老实说,我什至不知道你可以输出约束......但也许我的目标是快速设置视图并输出它们并在代码中进行精确定位,但是的,这可能是错误的方法。

以上是关于自动布局混合代码和界面生成器的主要内容,如果未能解决你的问题,请参考以下文章

代码中设置的自动布局约束未出现在界面生成器中

界面生成器问题中的 UIScollView 和自动布局

界面生成器中的自动布局

读书笔记iOS-自动布局

界面生成器:MapView 的自动布局

界面生成器中的自动布局高度 >= 0 帧