如何设置自动布局,以便 UILabel 调整大小并根据需要移动其他视图
Posted
技术标签:
【中文标题】如何设置自动布局,以便 UILabel 调整大小并根据需要移动其他视图【英文标题】:How to setup autolayout so UILabel resizes and other views move as necessary 【发布时间】:2017-09-08 16:09:11 【问题描述】:我有一个标签,它以纵向模式(2 行)环绕,但不是横向(1 行):
我想设置自动布局,以便标签可以根据需要调整大小,并根据标签上下移动其他视图。但是,我不太明白如何在 ios 故事板中进行设置。任何帮助表示赞赏。
提前感谢。
【问题讨论】:
您必须设置视图相对于标签的垂直间距。 这很简单。 什么你不明白吗?你做了什么,正在发生什么或没有发生什么? 我是 iOS 开发的新手,所以(还)对我来说并不容易。我已将行数设置为 0,打开自动换行,并将前导侧绑定到屏幕的左边缘,将尾随侧绑定到屏幕的右边缘。但是,当我预览纵向和横向模式时,UILabel 不会改变。一旦我让 UILabel 工作,我将堆叠其他视图。 【参考方案1】:如果我理解正确,您正在寻找两件事:
使用情节提要根据文本长度调整标签大小,这可以通过进入属性检查器并将Lines
设置为0
和Line break Mode
设置为WordWrap
来实现。还附上一张图片供参考
here。
只是一些额外的信息,您也可以使用以下代码以编程方式实现它:
myLabel.numberOfLines = 0
myLabel.lineBreakMode = .byWordWrapping
根据标签的大小移动其他视图,这可以通过对要推送的视图设置约束来实现。可以参考苹果的文档here,简单易懂,一步一步演示。
【讨论】:
感谢您提供指向 Apple 文档的链接。我在使用 UILabel 时遇到了最大的麻烦(请参阅我上面的评论),但重置为建议的约束似乎已经成功了。我不明白它所做的与我所做的不同,但我会进一步调查。此外,在应用程序构建并在模拟器中运行后,故事板似乎并没有准确显示视图的样子。模拟器中的一切看起来都不错,但故事板中的视图都被打乱了。这是典型的吗? 不客气。因此,重置为建议约束的作用是覆盖您给定的约束并添加满足视图的系统定义约束。约束应该由用户而不是由系统决定。阅读您对问题的最后评论后。我认为您忘记将标签顶部和底部的约束添加到周围的视图中,我认为当您重置为建议的约束时系统会为您添加这些约束。故事板应该接近模拟器/设备中视图的样子。你用的是什么版本的 Xcode?span> 我想给您的一个建议是,如果您使用的是 iOS 9 及更高版本,您可以使用 UIStackView,它几乎可以为您处理视图之间的约束并且相对容易使用.这是一个很好的学习资源stack views以上是关于如何设置自动布局,以便 UILabel 调整大小并根据需要移动其他视图的主要内容,如果未能解决你的问题,请参考以下文章
具有自动布局的多行UILabel,如何在不更改标签框架的情况下根据内容调整字体大小?