UIScrollView可滚动内容大小模糊

UIScrollView可滚动内容大小模糊

各位开发者,我在Interface Builder(Xcode 5 / iOS 7)中遇到AutoLayout问题。这是非常基本和重要的,所以我想每个人都应该知道这是如何正常运作的。如果这是Xcode中的一个错误,它是一个关键的错误!

所以,每当我有一个像这样的视图层次结构时,我遇到了麻烦:

>UIViewController>> UIView>>>UIScrollView>>>>UILabel (or any other comparable UIKit Element)

UIScrollView具有可靠的约束,例如,每侧50 px(没问题)。然后我向UILabel添加一个Top Space约束(没问题)(我甚至可以固定标签的高度/宽度,不做任何改变,但由于Label的内在大小,应该是不必要的)

当我向UILabel添加尾随约束时,麻烦就开始了:

例如,尾随空间:Superview等于:25

现在出现了两个警告 - 我不明白为什么:

A)可滚动内容大小歧义(滚动视图具有不明确的可滚动内容高度/宽度)

B)错位视图(预期标签:x = -67实际值:x = 207

我在一个新的项目中做了这个最小的例子,你可以下载并附上截图。如您所见,Interface Builder期望Label位于UIScrollView边界之外(橙色虚线矩形)。使用Resolve Issues Tool更新Label的框架会将其移动到那里。

请注意:如果用UIView替换UIScrollView,行为就像预期的那样(Label的框架是正确的,并且根据约束条件)。所以似乎UIScrollView存在问题,或者我错过了重要的事情。

当我按照IB的建议运行应用程序而不更新Label的框架时,它定位得很好,正好在它应该是的位置,并且UIScrollView是可滚动的。如果我更新框架,标签不在视线范围内,UIScrollView不会滚动。

帮助我Obi-Wan Kenobi!为什么模棱两可的布局?为什么错位观点?

你可以在这里下载示例项目,如果你能弄清楚发生了什么就试试:https//github.com/Wirsing84/AutoLayoutProblem


尚方宝剑之说
浏览 777回答 3
3回答

烙印99

这个错误花了我一段时间来追踪,最初我尝试固定ScrollView的大小,但错误信息清楚地说“内容大小”。我确保从ScrollView顶部固定的所有内容也固定在底部。这样,ScrollView可以通过查找所有对象和约束的高度来计算其内容高度。这解决了模糊的内容高度,宽度非常相似......最初我在ScrollView中居住了大部分X,但我还必须将对象固定到ScrollView的侧面。我不喜欢这样,因为iPhone6可能有更宽的屏幕,但它会消除“模糊内容宽度”错误。
打开App,查看更多内容
随时随地看视频慕课网APP