我有一个应用程序,正在从 iOS 7 更新到 8,并尝试利用 Apple 现在提供的新尺寸类别。我似乎遇到很多麻烦的一件事是约束系统的工作原理。我已经完成了一些教程并查看了其他帖子,但事情似乎仍然对我不利。
首先,我将解释我的文件结构并提供一些图像,以防万一我不清楚我所拥有的内容。
我的 View Controller 设置如下:
View Controller 看法 导航栏 键盘避免 ScrollView (UIScrollView) 看法 什么类型( child View ) 账单名称 欠款金额查看 可选 View 提醒 View 节省 这是该结构的屏幕截图:
对于我的限制,我将导航栏和键盘避免 (UIScrollView) 设置为 0 右上角、左下角和底部。参见下图。
到目前为止,一切都很顺利。 Xcode 不会提示缺少任何东西。
接下来是 ScrollView 内的 View ,我将其用作 ScrollView 内所有内容的容器。当我尝试从大约开始重复该过程时,我收到一些约束警告......但为什么呢?我在右上角、左下角和底部给了它一个约束,为什么这不足以让 Xcode 知道它应该有多高和多高。似乎也需要 View 的宽度和高度。如果我设置宽度,那么购买时它会假定宽度为 600,这对于任何 iPhone 来说都太宽了。
我确信我的想法在某些地方不正确..我只是不知道在哪里以及为什么。我真的很想了解这个系统是如何工作的,所以任何见解都会有帮助
谢谢!!
** 更新 **
这是检查员的样子 :
这就是 Xcode 提示的地方
最佳答案
UIScrollView
是约束方面的一个特殊情况。对 UIScrollView 的直接子级的约束实际上设置了 ScrollView 的 contentSize。它实际上非常强大,因为它意味着您可以用东西填充 UIView
,并且只要您适本地设置了所有约束,它就会自动设置 UIScrollView
的 contentSize无需您在代码中执行任何操作。但是,如果您没有将子 UIView
在各个方向上固定到 ScrollView 的约束,您将收到“不明确的可滚动内容”警告,因为这就是它计算 contentSize 的方式。
但是,这意味着您不能期望固定在 UIScrollView
左侧和右侧的子 UIView
与 UIScrollView< 的宽度相匹配
,因为默认宽度是由其内容决定的。
但是有一种方法可以解决这个问题。您可以在 Interface Builder 中选择 UIScrollView
和 UIView
,然后添加“等宽度”约束。这将绕过 contentSize 的设置,并且实际上将 UIView
的宽度与 UIScrollView
的框架宽度相匹配。
希望有帮助。
关于xcode - 澄清 Xcode 6 的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26071202/