我在UIScrollView中有一个UILabel,我试图用自动换行.我想使用AutoLayout进行布局配置.当UILabel不在UIScrollView中时,它会完美地包装.我只需要将行数设置为0并将换行模式设置为自动换行.
但是,当我将UILabel放在UIScrollView中时,自动换行不再起作用.我已经检查了“Dynamic UILabel height inside UIScrollView with AutoLayout”和“Correctly Size UILabel inside UIScrollView using Interface Builder and Autolayout?”,但这两个问题都没有帮助我的答案.
如果有人想看一下,我有set up a test project说明我正在谈论的内容.
解决方法
原因是滚动视图中的约束(固定在滚动视图中)并不意味着您认为它们的含义.它们与从内到外确定滚动视图的contentSize有关;他们不会从外面确定滚动视图内部事物的大小.请参阅我的答案:
https://stackoverflow.com/a/13548039/341994
在您的情况下,最简单的解决方案是使用中间内容视图,以便您具有此层次结构:
scroll view content view label
现在给出内容视图的绝对宽度和高度约束,并将它们全部固定在滚动视图的四个边上.现在标签将按预期工作.内容视图有足够的约束来绝对设置自己的大小,并从内部约束滚动视图的contentSize.同时,对标签的约束不是滚动视图而是内容视图,并且由于内容视图具有固定大小并且是普通视图(不是滚动视图),因此标签上的约束符合您的预期.