使用AutoLayout在UIScrollView中调整UIView进行滚动?
我有一个布局如下(使用AutoLayout,iPad):
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)都能正常工作。