带有选项卡的NSAttributedString

Heb*_*ian 7 objective-c nsattributedstring ios

你如何UILabel使用这种文本格式创建?你会使用NSAttributedString吗?

在此输入图像描述

Bri*_*kel 22

NSAttributedString可以创建带制表位的文本列.这与在具有相同限制的文字处理器中完成的方式类似.

let text = "Name\t: Johny\nGender\t: Male\nAge\t: 25\nFavourites\t: Reading, writing"

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.tabStops = [NSTextTab(textAlignment: NSTextAlignment.Left, location: 150, options: [:])]
paragraphStyle.headIndent = 150

label.attributedText = NSAttributedString(string: text, attributes: [NSParagraphStyleAttributeName: paragraphStyle])
Run Code Online (Sandbox Code Playgroud)

标签呈现以上属性字符串的屏幕截图

tabStops提供每个选项卡后继续文本的位置的点位置.在这里,我们在第一列之后的合理点处做了一个选项卡. headIndent告诉标签包装的文本需要缩进固定的数量,因此它将换行到下一行.

这种方法的局限性是:

  1. 制表位置是固定点值,因此您需要知道自己想要什么.如果您选择的值小于某些行的第一列的宽度,则这些行将缩进到其他位置.
  2. 只有当您的最后一列是包装的列时,才能真正包装.由于您的第二列以":"开头,您可能要么只是增加headIndent或者也要分割出":" \t:\t并设置第二个制表位.如果你不让文本换行,这不是问题.

如果这些限制过于严格,您可以将标签重组为具有自动布局约束的多个标签的集合.