Так что я потратил 45 минут, чтобы найти решение этой проблемы. Я использовал свое собственное расширение UILabel для подсветки текстов, но, к сожалению, оно выделяет пустые пробелы или, скорее, отступы, когда textAlignment установлен вправо, как ваша проблема.
Я понял, что не могу найти никакого другого решения, кроме как использовать этот модуль: TTTAttributedLabel
https://github.com/TTTAttributedLabel/TTTAttributedLabel
Это очень хорошо обрабатывает настройку атрибутивной строки для UILabel
. Модуль был написан на Objective-C, поэтому для этого вам понадобится соединительный заголовок. Я полагаю, вы уже знаете, как переносить коды Objective-C в ваши проекты Swift.
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .gray
let label = TTTAttributedLabel(frame: .zero)
label.textAlignment = .right
label.numberOfLines = 0
let attr: [NSAttributedString.Key: Any] = [
.font: UIFont.boldSystemFont(ofSize: 16.0),
.foregroundColor: UIColor.black,
.backgroundColor: UIColor.green
]
label.text = NSAttributedString(string: "How can I Remove\nthe space at the\nbeginning?", attributes: attr)
self.view.addSubview(label)
label.translatesAutoresizingMaskIntoConstraints = false
self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .top, relatedBy: .equal, toItem: self.view, attribute: .top, multiplier: 1.0, constant: 300))
self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .leading, relatedBy: .equal, toItem: self.view, attribute: .leading, multiplier: 1.0, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .trailing, relatedBy: .equal, toItem: self.view, attribute: .trailing, multiplier: 1.0, constant: 0))
}
Результат:
Надеюсь, это поможет!