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

Ked*_*ape 11 uiscrollview uiview ios autolayout

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

Xcode截图

UIScrollView有上,下,前置,后置空间到上海华盈为0.UIView也有四个类似的限制.第二个UILabel以编程方式将其高度设置为0(因为此处显示的屏幕不仅仅是屏幕).此外,这些四个引脚约束也已设置UIViewUIScrollView.

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

在此输入图像描述

黄色背景设置为最外侧视图,灰色背景设置为最外侧视图UIView.如果你仔细看到屏幕截图的末尾,那么UILabel文字似乎溢出了UIView.

我怀疑因为UIView无法"捕获"它的子视图的大小,所以UIScrollView也无法计算它的内容大小(如果滚动条的内容视图仅等于一个屏幕,则没有理由使其工作).即使这UILabel显然是一个子视图,为什么会发生这种情况UIView呢?如果我的怀疑是正确的,我如何设置UIView的高度等于实际的内容大小,以便我UILabel的正确"包含"在其中?

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

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

NB2:我也在这个SO问题这篇文章中尝试了答案,但我UIView根本不会超出屏幕的尺寸.(我只关心水平滚动)

Nir*_*iya 24

使用文本很难解释AutoLayout问题.我遇到了同样的问题.我在这个视频中找到了解决方案.希望这也会对你有所帮助.

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

此视频演示了如何创建一个UIScrollView,它在屏幕顶部有一些视图,在Autolayout的屏幕底部有一个视图.UIScrollView内容大小会自动调整为屏幕大小或内容大小,以便在较小的设备上滚动处于活动状态,而在较大的设备上滚动不活动,因为不需要.UITextFields下方的UIButton始终位于屏幕的底部,一切都适用于所有iPhone分辨率(iPhone 4/5/6/6 Plus).

  • 那令人难以置信的真棒!诀窍是具有另一种`UIView`**外**的`UIScrollView`,然后设定从所述内**`UIView`"相等的高度和宽度"约束到****外`UIView`.谢谢你! (7认同)
  • 救了我的一天!..对于任何对此感兴趣的人,我从内部UIView到scrollView本身设置了"Equal widths"和"Equal heights". (2认同)
  • 最好的答案,我到现在为止. (2认同)