各位开发者,
我在 Interface Builder (Xcode 5 / iOS 7) 中使用 AutoLayout 时遇到问题。
这是非常基本和重要的,所以我认为每个人都应该知道它是如何正常工作的。如果这是 Xcode 中的一个错误,那么它是一个严重的错误!
因此,每当我有这样的视图层次结构时,我就会遇到麻烦:
>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)
UIScrollView 有严格的约束,例如,距每边 50 像素(没问题)。
然后,我向 UILabel 添加顶部空间约束(没问题)(我什至可以固定标签的高度/宽度,不做任何更改,但由于标签的固有尺寸,应该是不必要的)
当我向 UILabel 添加尾随约束时,麻烦就开始了:
例如,尾随空格:Superview 等于:25
现在出现两个警告 - 我不明白为什么:
A)可滚动内容大小不明确(滚动视图具有不明确的可滚动内容高度/宽度)
B)放错位置的视图(标签预期:x= -67 实际:x= 207
我在一个新项目中做了这个最小的示例,您可以下载该项目并附上屏幕截图。正如您所看到的,Interface Builder 希望 Label 位于 UIScrollView 边界(橙色虚线矩形)之外。使用“解决问题工具”更新标签的框架会将其移至此处。
请注意:如果将 UIScrollView 替换为 UIView,则行为符合预期(标签的框架是正确的并且符合约束)。所以似乎 UIScrollView 有问题或者我错过了一些重要的事情。
当我运行应用程序而没有按照 IB 的建议更新标签框架时,它的位置很好,正好在它应该在的位置,并且 UIScrollView 是可滚动的。
如果我更新框架,标签将看不见,并且 UIScrollView 不会滚动。
帮助我欧比旺·克诺比!为什么布局不明确?为什么视图错位了?
您可以在此处下载示例项目并尝试是否可以弄清楚发生了什么:https://github.com/Wirsing84/AutoLayoutProblem https://github.com/Wirsing84/AutoLayoutProblem