使用AutoLayout在UIScrollView中调整UIView进行滚动?

我有一个布局如下(使用AutoLayout,iPad):

Xcode截图

UIScrollView具有Top,Bottom,Leading,Trailing空间到超级视图为0. UIView也具有全部四个类似的约束。 第二个UILabel的高度设置为0(因为这里显示的是多个文本)。 另外,这四个引脚约束也已经从UIView设置到了UIScrollView

加载XIB时,此UILabel正确显示长行的文本。 但滚动不起作用。 这是iPad上正在运行的应用程序的屏幕截图:

在这里输入图像说明

黄色的背景设置为最外层的视图,灰色的设置为UIView 。 如果您在屏幕截图的末尾仔细看, UILabel的文本似乎溢出了UIView

我怀疑是因为UIView不能“捕捉”它的子视图的大小,所以UIScrollView也不能计算它的内容大小(如果内容视图只等于一个屏幕,那么没有理由让滚动条工作)。 为什么即使UILabel显然是UIView的子视图,也会发生这种情况? 如果我的怀疑是正确的, 我怎么设置UIView的高度等于实际的内容大小,以便我的UILabel被正确“包含”在其中?

(静态设置UIView的高度,宽度不是一个选项)。

注意:testing没有UIView的XIB,在UIScrollView里只有一个UILabel (带有长文本)。 现在滚动工作(因为,我认为,滚动视图可以计算其内容的大小)。

NB2:我也试过这个问题和这个post的答案,但我的UIView不会超出屏幕的尺寸。 (我只关心横向滚动)

AutoLayout问题很难用文字解释。 我遇到了同样的问题。 我在这个video中find了解决scheme。 希望这也能帮助你。

https://www.youtube.com/watch?v=UnQsFlMGDsI

本video演示了如何创build一个UIScrollView,在屏幕的顶部有一些视图,在Autolayout的屏幕底部有一个视图。 UIScrollView内容大小自动调整为屏幕大小或内容大小,以便在较小的设备上滚动为活动状态,而在较大的设备上,由于不需要滚动,所以滚动无效。 UITextFields下面的UIButton总是停留在屏幕的底部,所有的iPhone分辨率(iPhone 4/5/6/6 Plus)都能正常工作。