免责声明:我看到了一种 SO 技术,它包括向 UIScrollView 添加一个 UIView(称为 contentView)并将所有内容放入此 contentView。我不想使用这种技术,因为我想理解为什么我会遇到当前问题。
我在 UIViewController 的默认 UIView 上有一个 UIScrollView,它的 UIScrollView 有 4 个约束:每侧一个(尾随、顶部、前导、底部),以便它粘附到其父 UIView。 这行得通!
但是当我想将 UIImageView 添加到 UIScrollView 并且我希望它粘附到其父侧(尾随、顶部、前导)+ 特定高度时,现在我遇到了问题。
它说:
Scroll View: Has ambiguous scrollable height
Scroll View: Needs constraints for: X position or width
最佳答案
xcode 抛出这些错误的原因是因为它无法在运行时计算 UIScrollView
和 UIImageView
框架。
当您为 UIScrollView
添加与其父 View 相关的约束时,它会告诉 xcode 绘制与其父 View 一样大的 ScrollView 。但是,当您为 UIImageView
添加与 UIScrollView
大小相关的约束时,它会告诉 xcode 绘制与 UIScrollView
内容大小一样大的 ImageView 。请注意 UIScrollView
大小和内容大小是两个不同的东西。
如果我们把它想象成一个房子, ScrollView 大小基本上就是窗口大小,它是一个可以用来查看房子内部的大小。内容大小是房子的大小。这就是为什么 ScrollView 的大小和内容大小之间没有关系的原因。
您可以通过两种方式解决您的问题,首先是通过编程方式或使用 IB 设置 ScrollView 内容大小。虽然,我不确定以编程方式设置它是否会消除警告。您可以按照答案 here 在 IB 中进行设置。 .第二种方法涉及向您的 UIImageView
添加更多约束。通过添加底部约束和宽度约束,xcode 可以计算 UIScrollView
内容大小,这将消除此警告。
关于ios - 自动布局中 UIScrollView 缺少约束 x 和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33860294/