取巧处理:UILabel(IOS开发) 超出宽度的文本省略号的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了取巧处理:UILabel(IOS开发) 超出宽度的文本省略号的问题相关的知识,希望对你有一定的参考价值。

参考技术A

UILabel 默认情况下,单行文本、使用固定宽高、固定字体的时候,超出的文本会被省略号代替,但对于某些设计中,省略号是不需要的(设计合理性不在本文讨论范围内)。考虑的采取几种方式:

实现可行,但总觉得每次渲染都得重新计算,这有多麻烦

UITextView 是文本域的显示组件,默认情况不存在最后一个字的溢出问题(折到第2行了),但UITextView 本身比UIlabel 可响应用户的操作更多,所以需要做一些设置才能保障正常的事件响应(尤其在Cell 里面的时候)

示例(仅贴出主要差异部分)

最终效果:

注意点:
1.使用NSAttributedString对文本设置相应的样式和行高、行距;
2.禁止userInteractionEnabled,防止UITextView的事件响应(编辑、选择);
3.resignFirstResponder,设为非第一响应者,在cell中尤其重要,否则点击文字无法触发cell 的 didSelected 的事件;
4.相比UILabel,内存占用多一些,尤其在大量cell中使用时。

懒也是一种生产力

iOS 10中的UILabel,制作文字字体

【中文标题】iOS 10中的UILabel,制作文字字体【英文标题】:UILabel in iOS 10, make text font 【发布时间】:2017-01-30 23:01:58 【问题描述】:

如果文本超出标签的宽度/高度限制的大小,我在使用 iOS 10 时无法将文本放入我的 UILabel 中。

这是故事板中 UILabel 的尺寸检查器:

我希望 UILabel 本身始终具有固定的宽度和高度,就像它当前在情节提要中一样。我只希望文本自动换行/更改字体大小并尽其所能,以适应该宽度/高度规范的范围。我在 UILabel 上尝试了以下操作:

adjustsFontSizeToFitWidthnumberOfLines = 0

我似乎无法获得正确的配置。

【问题讨论】:

听起来您尝试了正确的方法 - adjustsFontSizeToWidth - 但如果您包含代码,可能会出现问题。另外,检查您是否正确创建了 IBOutlet。 【参考方案1】:

您必须将minimumScaleFactor 设置为小于1 并将numberOfLines 设置为1 或更大,adjustsFontSizeToFitWidth 才能生效。

 

Swift 代码

label.numberOfLines = 1
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5

 

界面生成器

【讨论】:

以上是关于取巧处理:UILabel(IOS开发) 超出宽度的文本省略号的问题的主要内容,如果未能解决你的问题,请参考以下文章

角落不是UILabel和UIbutton ios swift的圆形

iOS设置UILabel最大宽度(preferredMaxLayoutWidth)

iOS开发:UILabel字号根据屏幕缩放

带有长文本 UILabel 的 UIView 无法显示超出屏幕高度的文本

iOS开发 UILabel实现自适应高宽

iOS-限制UILabel宽度自适应的最大宽度