首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动输出最大宽度,这样文本就不会在屏幕/视图之外流动

问自动输出最大宽度,这样文本就不会在屏幕/视图之外流动
EN

Stack Overflow用户
提问于 2016-04-11 21:43:36
回答 2查看 120关注 0票数 0

我有一个UILabel,设置为Align Center X to Superview和Align Center Y to Superview。它没有宽度,因此可以根据文本数量进行更改。一个小图标也需要坐在文字的左边:

​

​

​

​

问题是,当添加了太多的文本时,它会流到屏幕之外:

​

​

尽管有一个父级的UIView,它的前导和后继空间为12,但它仍然不尊重父视图。UILabel应该使文本大小更小,以适应所有文本,但它没有这样做。

怎样才能有这样一个居中的UILabel ,但仍然使它有一个最大的宽度,这样它就不会在屏幕之外流动?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-11 21:49:07

除非您特别确定这些约束应该是什么,否则UILabel不会受到父视图的约束。因此,默认情况下,它根本不考虑superview的前缘和后缘。

我建议从UILabel的父视图中添加一个宽度约束,该约束类型为“小于或等于”,其常数为0,乘数为0.85或其他合理值。这将使标签变得非常小,甚至零宽度,但不会让它超过其父视图宽度的85%。

票数 2
EN

Stack Overflow用户

发布于 2016-04-11 21:48:57

您需要设置行数、最小字体大小和adjustsFontSizeToFitWidth。

代码语言:javascript
复制
myLabel.numberOfLines = 1;
myLabel.minimumFontSize = 6;
myLabel.adjustsFontSizeToFitWidth = YES;

如果仍然有太多的文本,您需要选择多行,剪辑文本,或者使用省略号。

对于多行,设置myLabel.numberOfLines = 0

若要剪辑文本,请设置myLabel.clipsToBounds = YES

若要用省略号截断,请设置myLabel.lineBreakMode = NSLineBreakByTruncatingTail

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36559811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档