是否可以在 NSAttributedString 中混合不同的对齐方式?
Is is possible to mix different alignments in an NSAttributedString?
我有一个关于 NSMutableAttributedString
(或 NSAttributedString
)的简单问题。
是否可以做到以下几点。
假设我要显示的字符串是:"Hello\nWorld"
(第一行 Hello 第二行 World)
是否可以让第一行(Hello)左对齐,第二行(World)右对齐?
如果答案是肯定的,我该怎么做?
这可以使用 NSParagraphStyle
来实现:
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let paragraphStyle1 = NSMutableParagraphStyle()
paragraphStyle1.alignment = .left
let paragraphStyle2 = NSMutableParagraphStyle()
paragraphStyle2.alignment = .right
let attrString = NSMutableAttributedString.init(string: "Hello \n World")
if let range = attrString.string.range(of: "Hello") {
let nsrange = attrString.string.nsRange(from: range)
attrString.addAttributes([NSAttributedStringKey.paragraphStyle: paragraphStyle1], range: nsrange)
}
if let range = attrString.string.range(of: "World") {
let nsrange = attrString.string.nsRange(from: range)
attrString.addAttributes([NSAttributedStringKey.paragraphStyle: paragraphStyle2], range: nsrange)
}
self.label.textAlignment = .right
self.label.attributedText = attrString
}
输出:
我有一个关于 NSMutableAttributedString
(或 NSAttributedString
)的简单问题。
是否可以做到以下几点。 假设我要显示的字符串是:"Hello\nWorld" (第一行 Hello 第二行 World)
是否可以让第一行(Hello)左对齐,第二行(World)右对齐? 如果答案是肯定的,我该怎么做?
这可以使用 NSParagraphStyle
来实现:
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let paragraphStyle1 = NSMutableParagraphStyle()
paragraphStyle1.alignment = .left
let paragraphStyle2 = NSMutableParagraphStyle()
paragraphStyle2.alignment = .right
let attrString = NSMutableAttributedString.init(string: "Hello \n World")
if let range = attrString.string.range(of: "Hello") {
let nsrange = attrString.string.nsRange(from: range)
attrString.addAttributes([NSAttributedStringKey.paragraphStyle: paragraphStyle1], range: nsrange)
}
if let range = attrString.string.range(of: "World") {
let nsrange = attrString.string.nsRange(from: range)
attrString.addAttributes([NSAttributedStringKey.paragraphStyle: paragraphStyle2], range: nsrange)
}
self.label.textAlignment = .right
self.label.attributedText = attrString
}
输出: