多行文本换行时,一般要求结尾如果是标点符号,标点符号不能单独占一行,需要将上一行的最后一个文字将和标点符号一起放在下一行。
设置 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,能够获得更好的排版布局