Как добавить интервал к строкам в NSAttributedString

Я делаю приложение, которое форматирует сценарии, я использую NSAttributedString для форматирования текста, введенного в UITextView, но некоторые строки слишком близко друг к другу.

Мне было интересно, может ли кто-нибудь предоставить пример кода или подсказку о том, как изменить поле между этими строками, чтобы между ними было больше пространства.

Ниже приведено изображение другой программы для написания экрана на рабочем столе, которая демонстрирует, что я имею в виду, обратите внимание, как есть немного места перед каждый бит, где написано "Дороти".

enter image description here

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