如何在 UIAlertController 中更改 UIAlertAction 的字体大小和颜色

Posted

技术标签:

【中文标题】如何在 UIAlertController 中更改 UIAlertAction 的字体大小和颜色【英文标题】:How to change font size and color of UIAlertAction in UIAlertController 【发布时间】:2015-04-01 02:46:53 【问题描述】:

在上图中如何更改“完成”、“其他操作”的字体大小和颜色? 以及如何更改“标题”和“消息”的字体大小和颜色?

谢谢。

【问题讨论】:

UIAlertController custom font, size, color的可能重复 检查这个解决方案***.com/a/27518769/2050181 检查这个解决方案***.com/questions/26460706/… 【参考方案1】:

这是来自另一个堆栈溢出帖子,但似乎工作正常。 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"];

要改变文字的颜色如下,在行设置之前添加 [alertVC setValue:hogan forKey:@"attributedTitle"];

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

【讨论】:

在某些 ios 版本上尝试为未定义键设置值时会崩溃(不记得是哪个版本)。您还必须为您尝试将图像设置到的 UIAlertAction 覆盖 setValue: forUndefinedKey:valueForUndefinedKey:【参考方案2】:

在 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"];
            
        
    

【讨论】:

【参考方案3】:

我无法更改字体,但您可以更改字体颜色。在“hogan”示例中,更改 UIAlertAction 上的字体颜色:

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

【讨论】:

【参考方案4】:

简单地这样做

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

       // TODO : ACTION
    ];

    [action setValue:[UIColor redColor] forKey:@"titleTextColor"];
    [alertController action];

【讨论】:

以上是关于如何在 UIAlertController 中更改 UIAlertAction 的字体大小和颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 UIAlertController 高度?

我们可以在 swift 中更改 UIAlertController 按钮的高度和宽度吗

UIAlertController 更改字体颜色

更改 UIAlertController 选择的按钮颜色

UIAlertController更改字体颜色

UIAlertController 更改操作表的取消按钮的背景颜色