每当我向UIScrollView添加子视图时,我必须添加6个约束而不是4个。
如何重现问题:
您会注意到它增加了6个约束:
如果您尝试删除宽度或高度约束,则所有约束都将变为橙色。视图应该能够通过其尾随和前导约束来确定其宽度。同样,视图应该能够通过其顶部和底部约束来确定其高度。
为什么所有这些都需要6个呢?
注意:如果你用UIView而不是UIScrollView尝试同样的事情,那么一切都按预期工作。
答案 0 :(得分:0)
这是因为UIScrollView的内容大小也必须由约束决定。如果您不包含最后2个约束,则内容大小不知道它应该有多大。
实际上,UIScrollView实际上需要8个约束:
假设您有一个滚动视图,其中包含一个按钮(或任何其他具有固有大小的视图)。
您需要以下约束:
前四个例子是:
H:|[scrollView]|
V:|[scrollView]|
(这只是设置滚动视图的框架,使其占据整个屏幕。)
最后四个例子是:
H:|-10-[button]-10-|
V:|-10-[button]-10-|
(请注意,这些行中的每一行都会产生2个约束。)
假设按钮内在大小为50.使用这些约束,我们只需将滚动视图的内容大小设置为70x70。
更多信息可以是found here。
Apple还在iOS SDK Release Notes for iOS 6中发布了有关滚动视图和自动布局行为的一些信息。在那里,他们描述了如何使用“纯自动布局方法”和“混合方法”。