How to change font size and color of UIAlertAction in UIAlertController

泪湿孤枕 提交于 2019-12-01 00:00:47
jimrice

This is from another stack overflow post but seems to work fine. Post found here.

UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Dont care what goes here, since we're about to change below" message:@"" preferredStyle:UIAlertControllerStyleActionSheet];
NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan!"];
[hogan addAttribute:NSFontAttributeName
          value:[UIFont systemFontOfSize:50.0]
          range:NSMakeRange(24, 11)];
[alertVC setValue:hogan forKey:@"attributedTitle"];



UIAlertAction *button = [UIAlertAction actionWithTitle:@"Label text" 
                                    style:UIAlertActionStyleDefault
                                    handler:^(UIAlertAction *action){
                                                //add code to make something happen once tapped
}];
UIImage *accessoryImage = [UIImage imageNamed:@"someImage"];
[button setValue:accessoryImage forKey:@"image"];

To change the color of the text with the following, adding it before the line setting [alertVC setValue:hogan forKey:@"attributedTitle"];

[hogan addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,35)];

change color a action in UIAlertController

SEL selector = NSSelectorFromString(@"_alertController");
if ([actionSheet respondsToSelector:selector])
{
    UIAlertController *alertController = [actionSheet valueForKey:@"_alertController"];

    if ([alertController isKindOfClass:[UIAlertController class]])
    {
        NSArray *arr = alertController.actions;
        for (int i = 0; i <arr.count; i ++) {
            UIAlertAction *alertAction = [arr objectAtIndex:i];
            if ([alertAction.title isEqualToString:@"Logout"]) {
                UIColor *color = [UIColor redColor];
                [alertAction setValue:color forKey:@"titleTextColor"];
            }
        }
    }

I wasn't able to change the font, but you can change the font colour. From the 'hogan' example, changing the font colour on UIAlertAction:

[button setValue:[UIColor greenColor] forKey:@"titleTextColor"];

Simply do like this

    UIAlertAction * action = [UIAlertAction actionWithTitle:@"ACTION TITLE" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

       // TODO : ACTION
    }];

    [action setValue:[UIColor redColor] forKey:@"titleTextColor"];
    [alertController action];
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!