2014-01-15 5 views
3

У меня есть UITextView, который отображает достаточное количество текста. Мне нужно горизонтально сосредоточить некоторые, но не все, строки текста в текстовом представлении.Как я могу горизонтально центрировать одну строку текста в UITextView?

Я попытался установить NSParagraphStyleAttributeName с экземпляром NSParagraphStyle которого alignment свойство NSTextAlignmentCenter на диапазоне линии по центру. Я также устанавливаю шрифт, поэтому центрированная линия выделена жирным шрифтом. Когда я делаю это, используя код ниже, соответствующая строка выделена полужирным шрифтом, но остается левой.

if (shouldCenterLine) { 
    NSMutableParagraphStyle *centerStyle = [[NSMutableParagraphStyle alloc] init]; 
    centerStyle.alignment = NSTextAlignmentCenter; 
    NSDictionary *attributes = @{NSParagraphStyleAttributeName : centerStyle, 
           NSFontAttributeName : boldFont}; 
    [attributedString setAttributes:attributes range:lineRange]; 
} 

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

Можно ли убедить UITextView в центр определенных поддиапазонов его текста? Единственное решение для перехода к визуализируемому HTML UIWebView? Обратите внимание, что это приложение, поддерживающее iOS 6, поэтому, к сожалению, я не могу использовать Text Kit.

+1

У меня нет опыта в попытке изменить стиль абзаца, но я думаю, что попробую более широкий диапазон. Какой диапазон вы используете сейчас? Включает ли он линию возврата, которая заканчивает линию? Включает ли он возврат линии, который начинает линию? Возможно, просто попробуйте включить несколько символов до и после. Если он все еще не работает, попробуйте выполнить целую строку, просто чтобы убедиться, что она распознает 'NSTextAlignmentCenter'. (В том числе код, который создает 'lineRange', вероятно, будет полезен.) – ArtOfWarfare

+0

@ArtOfWarfare Спасибо! Пожалуйста, напишите свой комментарий в качестве ответа, чтобы я мог его принять. Расширение 'lineRange' для включения новой строки перед центрированием линии (т. Е. Добавление одного дополнительного символа в начало) устраняет проблему. –

+0

Рад слышать, что помог. Это первый раз, когда я когда-либо смотрел первую страницу StackOverflow и видел то, с чем я мог бы помочь, и никто еще не ответил. – ArtOfWarfare

ответ

1

Попробуйте включить строку, возвращающую строку, которую вы хотите центрировать в пределах диапазона, к которому вы применяете стиль.

Смежные вопросы