Я пытаюсь внедрить дизайн-ярлыки из Sketch, например. Мне нужны стили текста с размером шрифта = 19 и высотой строки = 50. Поэтому я в итоге использовал NSAttributedString
с NSMutableParagraphStyle
, но остановился из-за проблемы с прикреплением текста к нижней части UILabel
Я уже пытался использовать lineHeightMultiple
и lineSpacing
, но они не дали мне высоту строки, которую я хотел, поэтому я в итоге использовал minimumLineHeight
и maximumLineHeight
равные
Вот мой подход к созданию NSAttributedString
private static func makeAttributedString(
with attributes: TextAttributes,
text: String? = nil,
alignment: NSTextAlignment = .center
) -> NSAttributedString {
let font = UIFont(name: attributes.font.rawValue, size: attributes.fontSize)!
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = alignment
paragraph.paragraphSpacing = attributes.paragraph
paragraph.minimumLineHeight = attributes.lineHeight // equal 50 in my case
paragraph.maximumLineHeight = attributes.lineHeight // equal 50 in my case
let attributes: [NSAttributedStringKey: Any] = [
NSAttributedStringKey.paragraphStyle: paragraph,
NSAttributedStringKey.foregroundColor: attributes.textColor,
NSAttributedStringKey.kern: attributes.kern,
NSAttributedStringKey.font: font
]
return NSAttributedString(string: text ?? "", attributes: attributes)
}
Я ожидаю, что результат похож на дизайн
но на самом деле получаю
Примечание: установка ограничения высоты на 50 неприменима, потому что мне также нужны многострочные метки, но с ними та же ошибка