ios – UILabel不会使用AutoLayout在UIScrollView中自动换行

我在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.同时,对标签的约束不是滚动视图而是内容视图,并且由于内容视图具有固定大小并且是普通视图(不是滚动视图),因此标签上的约束符合您的预期.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...