Изменить размер текста в UITextView на основе содержимого NSString

Я пытаюсь загрузить UITextView с содержимым из экземпляров подкласса NSManagedObject (стихи в приложении для чтения Библии).

Мой UITextView загружается путем перебора стихов в выбранной главе и добавления каждого последующего стиха.

NSArray *selectedVerses = [[Store sharedStore] versesForBookName:selectedBook
                                                   ChapterNumber:selectedChapterNum];
displayString = @"";
for (Verse *v in selectedVerses) {
    NSMutableString *addedString =
    [NSMutableString stringWithFormat:@"%d %@", [v versenum], [v verse]];
    displayString = [NSMutableString stringWithFormat:@"%@ %@", addedString, displayString];
}
NSString *title = [NSString stringWithFormat:@"%@ %@", selectedBook, selectedChapter];
[self setTitle:title];
[[self readerTextView] setNeedsDisplay];
[[self readerTextView] setText:displayString];

Приведенный выше код создает правильное представление, но допускает только один размер текста для всего UITextView.

Я хотел бы, чтобы номер стиха, который предшествует каждому стиху, был шрифтом меньшего размера, чем его стих, но не нашел способа заставить его работать. Я читал документацию, и кажется, что это должно быть возможно с TextKit и CoreText за счет использования строк с атрибутами, но я не могу заставить это скомпилировать.

Я не хочу загружать представление как UIWebView.

Любые предложения для этого очень ценятся.


person jefffreyallen    schedule 12.10.2013    source источник


Ответы (1)


Вы ищете NSAttributedString и NSMutableAttributedString. Вам следует прочитать Введение в руководство по программированию строк с атрибутами . Обычно они похожи на обычные строки, но дополнительно содержат атрибуты с диапазонами, к которым они применяются. Еще один метод, который будет вам полезен:

[self readerTextView].attributedText = yourAttributedString;

Если у вас есть определенные проблемы со строками с атрибутами, опубликуйте свой код.

person Arek Holko    schedule 12.10.2013