浅谈iOS 自动调节文本高度

简介: 文字展示是任何GUI开发的一个最常规的编程任务。可能一提及文字我们脑中想到的无非就是 Label 和 Text 这两个关键词,今天我们就谈谈 Label。

文字展示是任何GUI开发的一个最常规的编程任务。可能一提及文字我们脑中想到的无非就是 Label 和 Text 这两个关键词,今天我们就谈谈 Label。

无论在 Windows 或者 Web 开发中当 Label 中显示的文字内容是一个超长的文本,我们都是习惯于由当前的UI引擎自己去计算10几年来都是一种常识。直到我用iOS,真是有种想骂娘的冲动啊,设置个Label的自动高度都得有技巧真特么的坑!

坑就坑吧,与众多同僚一样还不照样得忍受着这个糟糕的UIKit的折磨仍然得用,谁叫 iOS的项目能卖得起价呢。既然不能反抗也只能学着享受了。

UILabel

如果UILabel独立存在于view内,默认情况下是显示单行,而且UIKit会依据UILabel的断词策略自动截断文字来显示。面对这种情况我们可以使用 iOS8 的自动化局布特性来解决。

具体做法:

  1. UILabel 增加 高度约束
  2. 将 lines 增加一个最大值(随机)
  3. 进入高度属性面版,将 "Relation" 选择为 Greater Than Equal

这样 UILabel 就成为一个自增高的标签控件了。

UITableViewCell

如果UILabel控制放至于 UITableView 中时我们就需要对 tableview 进行一些更改才能让每个表格行实现自动计算行高度。具体做法如下:

首先在 viewDidLoad() 内加入以下的代码:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44

estimatedRowHeight 这个值只需要设置一个与实际行高度差不多的整数就行了,其它的就交由 UIKit 自已去算就好了。

然后将 UILabellines 属性设置为 "0" (注意:这个与之前的方式就不一样了)

完成这两步我们的 tableview 内的越长文本内容就能实现自动行高计算了。

相关文章
|
6月前
|
iOS开发
iOS中如何显示后台返回的带有html标签的富文本字符串
iOS中如何显示后台返回的带有html标签的富文本字符串
61 0
|
自然语言处理 搜索推荐 iOS开发
iOS MachineLearning 系列(19)—— 分析文本中的问题答案
本篇文章将介绍Apple官方推荐的唯一的一个文本处理模型:BERT-SQuAD。此模型用来分析一段文本,并根据提供的问题在文本中寻找答案。需要注意,BERT模型不会生成新的句子,它会从提供的文本中找到最有可能的答案段落或句子。
193 0
iOS MachineLearning 系列(19)—— 分析文本中的问题答案
|
API iOS开发 开发者
iOS文本布局探讨之三——使用TextKit框架进行富文本布局
iOS文本布局探讨之三——使用TextKit框架进行富文本布局
406 0
iOS文本布局探讨之三——使用TextKit框架进行富文本布局
|
人工智能 自然语言处理 API
iOS MachineLearning 系列(10)—— 自然语言分析之文本拆解
本系列的前几篇文章介绍了iOS中有关图像和视频处理的API,视觉处理主要有Vision框架负责,本篇起,将介绍在iOS中Machine Learning领域相关的自然语言处理框架:NaturalLanguage。
181 0
|
iOS开发
iOS上如何让按钮文本左对齐问题
iOS上如何让按钮文本左对齐问题
126 0
|
iOS开发 开发者
iOS文本布局探讨之二——关于TextKit框架中的字体描述
iOS文本布局探讨之二——关于TextKit框架中的字体描述
237 0
iOS文本布局探讨之二——关于TextKit框架中的字体描述
|
开发框架 前端开发 JavaScript
iOS文本布局探讨之一——文本布局框架TextKit浅析(一)
iOS文本布局探讨之一——文本布局框架TextKit浅析
290 0
iOS文本布局探讨之一——文本布局框架TextKit浅析(一)
|
iOS开发 容器
iOS文本布局探讨之一——文本布局框架TextKit浅析(二)
iOS文本布局探讨之一——文本布局框架TextKit浅析
475 0
|
开发工具 git iOS开发
iOS中支持HTML文本的标签控件——MDHTMLLabel
iOS中支持HTML文本的标签控件——MDHTMLLabel
419 0
|
iOS开发
iOS UILabel(文本)
UILabel属性 1.text: 设置标签显示文本。 2.attributedText: 设置标签属性文本。 NSString *text = @"first"; NSMutableAttributedString *textLabelStr =...
1064 0