UILabel 不会使用 AutoLayout 在 UIScrollView 内自动换行

2024-01-21

我有一个UILabel里面一个UIScrollView我正在尝试自动换行。我想使用 AutoLayout 进行布局配置。这UILabel当单词不在 a 内时,它会完美换行UIScrollView。我只需将行数设置为 0 并将换行模式设置为自动换行即可。

然而,当我把UILabel里面一个UIScrollView,自动换行不再起作用。我已经查过“使用 AutoLayout 的 UIScrollView 内的动态 UILabel 高度 https://stackoverflow.com/q/19192141/1438339" and "使用 Interface Builder 和 Autolayout 正确调整 UIScrollView 内 UILabel 的大小? https://stackoverflow.com/q/23617652/1438339”,但是这些问题都没有对我有帮助的答案。

I have 设置一个测试项目 https://github.com/rajohns08/AutoLayoutTest如果有人想看的话,可以准确地说明我在说什么。


原因是滚动视图内的约束(固定到滚动视图)并不意味着您认为的含义。它们与确定contentSize从内到外的滚动视图;它们本身并不能从外到内确定滚动视图内事物的大小。请参阅我的回答:https://stackoverflow.com/a/13548039/341994 https://stackoverflow.com/a/13548039/341994

对于您的情况,最简单的解决方案是使用中间内容视图,以便您拥有以下层次结构:

scroll view
    content view
        label

现在给内容视图绝对宽度和高度约束并将其固定在滚动视图的所有四个边上。Now该标签将按您的预期工作。内容视图有足够的约束来绝对设置其自身的大小并约束滚动视图的contentSize从里面。同时,标签上的约束不是针对滚动视图,而是针对内容视图,并且由于内容视图具有固定大小并且是普通视图(不是滚动视图),因此标签上的约束符合您的期望。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UILabel 不会使用 AutoLayout 在 UIScrollView 内自动换行 的相关文章

随机推荐