我想要一个多行标签,第一行用x点缩进。
为此,我使用了NSAttributedString
及其属性firstLineHeadIndent
。
它适用于大多数情况,除非文本只是一行长于一行。我想通了,在那种情况下,它忽略了缩进。并且标签的尾部会穿过标签的边缘以获得缩进的精确数量。
let text = "Hello World! Hello World! Hee"
let attString = NSMutableAttributedString(string: text)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.firstLineHeadIndent = 40
attString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attString.length))
attString.addAttribute(NSFontAttributeName, value: label.font, range: NSMakeRange(0, attString.length))
label.attributedText = attString
我应该注意,如果我使用系统字体,那一切都很好。仅在自定义字体的情况下。在这种情况下,我使用称为Rubik的字体。你知道如何使用这种字体吗?
答案 0 :(得分:3)
注意:我使用Rubik-Regular font
作为您在帖子中提到的测试字体。从您的代码开始,您只需将headIntent
设置为first line
。如果您想使用headIntent
,则应使用paragraphStyle.headIntent
。
let text = "Hello World! Hello World! Hee"
let attString = NSMutableAttributedString(string: text)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .left
paragraphStyle.firstLineHeadIndent = 40
paragraphStyle.headIndent = 40
paragraphStyle.lineBreakMode = .byTruncatingTail
attString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attString.length))
attString.addAttribute(NSFontAttributeName, value: UIFont(name: "Rubik-Regular", size: 25)!, range: NSMakeRange(0, attString.length))
label.attributedText = attString
label.numberOfLines = 0