多行文本换行时,一般要求结尾如果是标点符号,标点符号不能单独占一行,需要将上一行的最后一个文字将和标点符号一起放在下一行。
设置 lineBreakMode = .byWordWrapping,按单词分割换行。
label.lineBreakMode = .byWordWrapping
label.text = "1我们是好人解决办法解决办法。"
textView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
textView.contentInsetAdjustmentBehavior = .never
textView.textContainerInset = UIEdgeInsetsMake(0, -5, 0, -5)
//textView.textContainer.lineBreakMode = .byCharWrapping 失效
textView.text = "1我们是好人解决办法解决办法。"
UILabel和UITextView同样宽度,设置同样文字,当结尾需要换行时,换行标准会有差异
UILabel如果结尾是一个单词,他会将这个单词和标点符号同时换行。
UITextView不会。
Text Programming Guide for iOS
上面提示到:
UILabel
定义
标签
,显示静态文本字符串
UITextField
定义一个
文本字段
,显示一行可编辑文本。
UITextView
定义
文本视图
,显示多行可编辑文本。
虽然这些类实际上可以支持任意数量的文本的显示,但标签和文本字段旨在用于相对少量的文本,通常是单行。另一方面,文本视图旨在显示大量文本。
从
UITextView
类创建的文本视图对象,显示格式为段落,列和页面的文本,具有精细排版的所有特征,例如字距调整,连字,复杂的换行和对齐
所以如果想显示多行大量文本,建议使用UITextView,能够获得更好的排版布局