免责声明:我看到了一种SO技术,其中包括将UIView(称为contentView)添加到UIScrollView并将所有内容放到此contentView中。我不想使用这种技术,因为我想 理解 为什么我遇到了当前的问题。
我在UIViewController的默认UIView上有一个UIScrollView,它的UIScrollView有4个约束:每边一个(尾部,顶部,前导,底部),所以它粘贴到它的父UIView。 这有效!
但是当我想在UIScrollView中添加一个UIImageView并希望它粘贴到其父边(尾随,顶部,前导)+特定高度时,现在我遇到了问题。
它说:
Scroll View: Has ambiguous scrollable height
Scroll View: Needs constraints for: X position or width
答案 0 :(得分:7)
xcode抛出这些错误的原因是因为它无法在运行时计算UIScrollView
和UIImageView
帧。
当您为其超级视图添加与UIScrollView
相关的约束时,它会告诉xcode绘制与其超级视图一样大的滚动视图。但是,当您为与UIImageView
大小相关的UIScrollView
添加约束时,它会告诉xcode绘制与UIScrollView
内容大小一样大的图片视图。请注意,UIScrollView
大小和内容大小是两回事。
如果我们把它想象成一个房子,滚动视图大小基本上是窗口大小,它是一个可以用来查看房子内部的大小。内容大小是房子的大小。这就是滚动视图的大小和内容大小之间没有关系的原因。
您可以通过两种方式修复问题,首先通过编程方式或使用IB设置滚动视图内容大小。虽然,我不确定如果以编程方式设置它会使警告静音。您可以按照答案here在IB中进行设置。第二种方法,包括为UIImageView
添加更多约束。通过添加底部约束和宽度约束,xcode可以计算UIScrollView
内容大小,这将删除此警告。
答案 1 :(得分:3)
为了解决这个问题,我做了以下事情: 1.插入滚动视图。从各个方向给Superview带来限制 2.在Scrollview内部,我添加了另一个UIView。然后,我向Superview添加了类似的限制,从各个方向到UIView。除此之外,我给它垂直居中对齐和水平居中对齐。这消除了约束错误。
答案 2 :(得分:0)
这对我有用。
在storyborad
中执行以下操作这应该照顾滚动视图抱怨x位置。