Подтвердить что ты не робот

Как установить цвет и выравнивание атрибутного текста в UITextView в iOS 7?

Форматирование моего textViews отлично работало в iOS 6, но уже не в iOS 7. Я понимаю, что в Text Kit большая часть под капотом изменилась. Это становится действительно довольно запутанным, и я надеюсь, что кто-то может помочь выправить его немного, помогая мне с чем-то таким же простым, как это.

Мой статический UITextView изначально получил значение для свойств textColor и textAlignment. Затем я создал NSMutableAttributedString, присвоил ему атрибуты, а затем присвоил его свойству textView attributedText. Выравнивание и цвет больше не действуют в iOS 7.

Как я могу это исправить? Если эти свойства не действуют, то почему они больше существуют? Здесь создание textView:

UITextView *titleView = [[UITextView alloc]initWithFrame:CGRectMake(0, 90, 1024, 150)];
titleView.textAlignment = NSTextAlignmentCenter;
titleView.textColor = [UIColor whiteColor];

NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:60];
[title addAttribute:NSParagraphStyleAttributeName value:font range:NSMakeRange(0, title.length)];
titleView.attributedText = title;

[self.view addSubview:titleView];
4b9b3361

Ответ 1

Любопытно, что свойства учитываются при UILabel, но не для UITextView

Почему бы вам просто не добавить атрибуты для цвета и выравнивания к атрибутной строке, аналогичной тому, как вы это делаете с шрифтом?

Что-то вроде:

NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:60];
[title addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, title.length)];

//add color
[title addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, title.length)];

//add alignment
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setAlignment:NSTextAlignmentCenter];
[title addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, title.length)];

titleView.attributedText = title;

Изменить: Сначала назначьте текст, затем измените свойства и таким образом, как это работает.

UITextView *titleView = [[UITextView alloc]initWithFrame:CGRectMake(0, 90, 1024, 150)];

//create attributed string and change font
NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:60];
[title addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, title.length)];

//assign text first, then customize properties
titleView.attributedText = title;
titleView.textAlignment = NSTextAlignmentCenter;
titleView.textColor = [UIColor whiteColor];