Как добавить интервал к строкам в NSAttributedString
Я делаю приложение, которое форматирует сценарии, я использую NSAttributedString для форматирования текста, введенного в UITextView, но некоторые строки слишком близко друг к другу.
Мне было интересно, может ли кто-нибудь предоставить пример кода или подсказку о том, как изменить поле между этими строками, чтобы между ними было больше пространства.
Ниже приведено изображение другой программы для написания экрана на рабочем столе, которая демонстрирует, что я имею в виду, обратите внимание, как есть немного места перед каждый бит, где написано "Дороти".
3 ответов
в следующем примере кода используется стиль абзаца для регулировки расстояния между абзацами текста.
UIFont *font = [UIFont fontWithName:fontName size:fontSize];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.paragraphSpacing = 0.25 * font.lineHeight;
NSDictionary *attributes = @{NSFontAttributeName:font,
NSForegroundColorAttributeName:[UIColor whiteColor],
NSBackgroundColorAttributeName:[UIColor clearColor],
NSParagraphStyleAttributeName:paragraphStyle,
};
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:text attributes:attributes];
чтобы выборочно настроить интервал между определенными абзацами, примените стиль абзаца только к этим абзацам.
надеюсь, что это помогает.
отличный ответ @Joe Smith
в случае, если кто-то хотел бы увидеть, как это выглядит в Swift 2.*:
let font = UIFont(name: String, size: CGFloat)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.paragraphSpacing = 0.25 * font.lineHeight
let attributes = [NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle]
let attributedText = NSAttributedString(string: String, attributes: attributes)
self.textView.attributedText = attributedText
вот Swift 4.* версия:
let string =
"""
A multiline
string here
"""
let font = UIFont(name: "Avenir-Roman", size: 17.0)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.paragraphSpacing = 0.25 * (font?.lineHeight)!
let attributes = [NSAttributedStringKey.font: font as Any, NSAttributedStringKey.paragraphStyle: paragraphStyle]
let attrText = NSAttributedString(string: string, attributes: attributes)
self.textView.attributedText = attrText