2013-10-30 22 views
0

每当我添加一个子视图到一个UIScrollView,我必须补充6层的约束,而不是4为什么在UIScrollView中放置视图时需要6个约束?

如何重现该问题:

  1. 创建一个新的单一视图的应用程序。
  2. 在故事板中,添加一个填充整个屏幕的UIScrollView。
  3. 添加失去的约束(这应该加4个约束到上海华,诸如“顶层空间到:上海华)。
  4. 添加一个新的UIView作为的UIScrollView的子视图大小,以便它是一个小矩形。
  5. 选择添加此框缺少约束

你会发现,它增加了6个约束:

  • 4尾/领先/顶/底部的SuperView
  • 1的宽度
  • 1高度

如果试图删除的宽度或高度的限制,所有的约束变为橙色。视图应该能够通过其尾部和前导约束来确定其宽度。同样,视图应该能够通过它的顶部和底部约束来确定它的高度。

为什么所有这些都需要呢?

注意:如果您尝试使用UIView而不是UIScrollView执行相同的操作,则所有内容均按预期工作。

回答

0

这是因为UIScrollView的内容大小也必须由约束条件决定。如果不包含最后2个约束,则内容大小不知道它应该有多大。

在现实中,实际需要8个约束一个UIScrollView:

假设有在它的单个按钮(或具有的特性尺寸的任何其它视图)的单个滚动视图。

您需要以下限制:

  • 4用于定位滚动视图的框架。
  • 4用于确定滚动视图的内容大小。

的前四个的一个例子是:

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中滚动视图和自动布局行为的一些信息。在那里,他们描述了如何使用“纯自动布局方法”和“混合方法”。

相关问题