IPhone: изменить межстрочный интервал в UITextView? - PullRequest
6 голосов
/ 29 сентября 2010

Я искал во всей сети информацию / примеры ...

Я пытаюсь изменить межстрочный интервал текста внутри объекта UITextView на двойной интервал.Я думал, что вы могли бы сделать это через Core Text, но не нашли решения!

Любой пример кода или информация будет принята с благодарностью!Спасибо!

Ответы [ 3 ]

5 голосов
/ 29 сентября 2010

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

С Core Text вы, конечно же, получаете полный контроль над макетом нарисованного текста.Но было бы много работы переписать UITextView -подобный элемент управления с нуля.

4 голосов
/ 16 февраля 2014

Этот вопрос задавался до iOS 6. Я хотел бы опубликовать обновленный ответ для тех, кто хотел бы сделать это.

Это можно сделать сейчас с iOS 6 и более поздними версиями, используяNSAttributedString.UITextView теперь принимает приписанную строку как одно из своих свойств.Вы можете выполнять всевозможные манипуляции с текстом приписанными строками, включая межстрочный интервал.Вы можете установить минимальную и максимальную высоту строки для атрибута стиля абзаца строки.

Для получения дополнительной информации ознакомьтесь с ссылкой на класс NSAttributedString .

Вот примерчто вы могли бы сделать:

NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.minimumLineHeight = 21.0f;
paragraph.maximumLineHeight = 21.0f;
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"Test text line 1\nTest text line 2\nTest text line 3" attributes:@{NSParagraphStyleAttributeName: paragraph}];
textView.attributedText = attributedString;
2 голосов
/ 03 февраля 2016

Вы можете использовать NSLayoutManagerDelegate. Добавьте этот делегат в свой класс ViewController или UIView (и т. Д.), А затем при создании UITextView ...

yourTextView.layoutManager.delegate = self

Добавить этот метод делегата:

func layoutManager(layoutManager: NSLayoutManager, lineSpacingAfterGlyphAtIndex glyphIndex: Int, withProposedLineFragmentRect rect: CGRect) -> CGFloat {
    return 5 //Whatever you'd like...
}
...