Можно ли смешивать различные выравнивания в NSAttributedString? - PullRequest
0 голосов
/ 31 мая 2018

У меня есть простой вопрос относительно NSMutableAttributedString (или NSAttributedString).

Можно ли сделать следующее.Предположим, что строка, которую я хочу отобразить: «Hello \ nWorld» ( Hello в первой строке и World во второй)

Возможно ли получитьпервая строка ( Hello ) выровнена по левому краю, а вторая строка ( World ) выровнена по правому краю?Если ответ ДА, как я могу это сделать?

1 Ответ

0 голосов
/ 31 мая 2018

Этого можно добиться, используя 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
}

Вывод: output

...