UIAlertAction 值列表

Posted

技术标签:

【中文标题】UIAlertAction 值列表【英文标题】:UIAlertAction list of values 【发布时间】:2015-05-05 14:47:04 【问题描述】:

我正在尝试弄清楚如何更改 UIAlertAction 标题的字体类型。 我假设,可以通过为特定键设置一个值来完成。 例如,要设置图像,您可以这样做:

action.setValue(image, forKey: "image")

是否有所有可用键的列表?我不知道使用哪个键来更改字体、左/右对齐标题等...

【问题讨论】:

有没有办法为 UIAlertAction 标题使用属性字符串? 【参考方案1】:

class_copyIvarList 可能是您需要的。

斯威夫特

extension UIAlertAction 
    static var propertyNames: [String] 
        var outCount: UInt32 = 0
        guard let ivars = class_copyIvarList(self, &outCount) else 
            return []
        
        var result = [String]()
        let count = Int(outCount)
        for i in 0..<count 
            let pro: Ivar = ivars[i]
            guard let ivarName = ivar_getName(pro) else 
                continue
            
            guard let name = String(utf8String: ivarName) else 
                continue
            
            result.append(name)
        
        return result
    


然后

print(UIAlertAction.propertyNames)

输出是

["_title", "_titleTextAlignment", "_enabled", "_checked", "_isPreferred", "_imageTintColor", "_titleTextColor", "_style", "_handler", "_simpleHandler", "_image", "_shouldDismissHandler", "__descriptiveText", "_contentViewController", "_keyCommandInput", "_keyCommandModifierFlags", "__representer", "__interfaceActionRepresentation", "__alertController"]

【讨论】:

【参考方案2】:

您可以使用它来更改 UIAlertAction 标题的颜色。

 UIAlertController *alertController = [UIAlertController
                                          alertControllerWithTitle:@"alert view"
                                          message:@"hello alert controller"
                                          preferredStyle:UIAlertControllerStyleAlert];

    alertController.view.tintColor = [UIColor greenColor];

    UIAlertAction *cancelAction = [UIAlertAction
                                   actionWithTitle:@"Cancel"
                                   style:UIAlertActionStyleCancel
                                   handler:^(UIAlertAction *action)
                                   

                                   ];
    [alertController addAction:cancelAction];

    [self.navigationController presentViewController: alertController animated:YES completion:nil];

查看此链接-UIAlertController custom font, size, color

【讨论】:

这种方法现在有几个问题:(Xcode 8.2.1)它只影响默认和取消按钮,而不影响标题(或消息),并且在某些版本的 ios 中 .tintColor应该在调用 presentViewController 后更改。设置按钮颜色的更好方法是放置 [[UIView appearanceWhenContainedIn:[UIAlertController class], nil] setTintColor:appBarColor];在您的应用委托中。

以上是关于UIAlertAction 值列表的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 UIAlertAction 中获取文本字段值?

如何执行 UIAlertAction 的处理程序?

UIAlertAction - 处理动作

iOS弹窗UIAlertAction用法

在 UIAlertController 中的 UIAlertAction 中将图像居中

制作 UIAlertAction 处理程序的正确方法