答案 0 :(得分:19)
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])
tabStops
提供每个标签后继续发送文字的位置。在这里,我们在第一列之后的合理点处做了一个选项卡。
headIndent
告诉标签包装的文本需要缩进固定的数量,因此它将换行到下一行。
这种方法的局限性是:
headIndent
或将“:”拆分为\t:\t
并设置第二个制表位。如果你不让文本换行,这不是问题。如果这些限制过于严格,您可以将标签重组为具有自动布局限制的多个标签的集合。
答案 1 :(得分:1)
在Swift 4.2或更高版本中
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.tabStops = [NSTextTab.init(textAlignment: .left, location: 150, options: [:])]
paragraphStyle.headIndent = 150
let attributedTitle = NSAttributedString(string: "Some Title", attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 14.0), NSAttributedString.Key.paragraphStyle: paragraphStyle])