NSTextAlignmentLeft для UIAlertController

Кто-нибудь смог найти способ установить выравнивание текста UIAlertController. Точнее, стиль листа действий?

Я использую этот метод для добавления изображений (значков) к действиям:

UIImage *qsimage = [UIImage imageNamed:@"snapshot.png"];
[snapshot setValue:qsimage forKey:@"image"];
//where 'snapshot' is a UIAlertAction

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

Я пытаюсь походить на то, что Apple сделала в скором выпуске iOS 8.4 для своего музыкального приложения:

pic1

Мысли? Я пропустил что-то простое?

изменить

После некоторой отладки я понял, что действия предупреждений находятся в UICollectionView. Я могу успешно изменить цвета всех кнопок, но не могу изменить метки действий с точки зрения выравнивания. Вот как я получил к ним доступ:

 [[UICollectionView appearanceWhenContainedIn:[UIAlertController class], nil] setTintColor:[UIColor blueColor]];

Я также безуспешно пытался использовать setTitleTextAttributes для действий с объектами и ключами NSDictionary. Любые идеи?


person soulshined    schedule 16.04.2015    source источник
comment
Я думаю, вам нужно перебрать подвиды, чтобы получить UILabel, а затем изменить выравнивание. Обратитесь к этой ссылке - stackoverflow.com/questions/25962559/   -  person Uttam Sinha    schedule 16.04.2015
comment
Это касается сообщения и заголовка предупреждения, а не действий.   -  person soulshined    schedule 16.04.2015
comment
Привет, можешь дать исходный код точного представления?   -  person Optimus    schedule 23.05.2017
comment
извините, могу я спросить, как вы можете сделать выравнивание по левому краю для метки в действии предупреждения?   -  person Heo Đất Hades    schedule 04.08.2017


Ответы (1)


Это проверено и работает - UILabel+Appearance.h:

@interface UILabel (FontAppearance)
@property (nonatomic, assign) NSTextAlignment appearanceAlignment UI_APPEARANCE_SELECTOR;
@end


@implementation UILabel (FontAppearance)

-(void)setAppearanceAlignment:(NSTextAlignment)alignment {
    [self setTextAlignment:alignment];
}

-(NSTextAlignment)appearanceAlignment {
    return self.textAlignment;
}

@end

Применение:

UILabel * appearanceLabel = [UILabel appearanceWhenContainedIn:UIAlertController.class, nil];
[appearanceLabel setAppearanceAlignment:NSTextAlignmentLeft];
person Ivan    schedule 14.07.2015