Swift:Alert Action的forKey可用参数列表在哪查询?无backgroundColor参数
嘿,这个问题我之前折腾Alert样式的时候也遇到过,给你几个实用的获取途径,顺便聊聊背景色的事儿:
苹果官方文档&Xcode代码提示
打开Xcode的文档(快捷键Shift+Command+0)搜索UIAlertAction,先看它的公开属性——这些属性的名称基本都是可以直接用在setValue(_:forKey:)里的合法参数,比如titleTextColor、enabled、title这些。官方明确支持的KVC键都是和公开属性对应的,这部分是最安全、不会踩审核坑的。Runtime探测属性列表
如果想挖得更深(比如找一些非公开的参数),可以用Runtime API遍历UIAlertAction的所有属性,这些属性名很多都能作为forKey的参数。比如写一段小代码跑一下:import UIKit let testAction = UIAlertAction(title: "测试", style: .default) {} let actionClass = type(of: testAction) var propertyCount: UInt32 = 0 guard let properties = class_copyPropertyList(actionClass, &propertyCount) else { return } for index in 0..<Int(propertyCount) { let property = properties[index] let propertyName = String(cString: property_getName(property)) print("可用参数候选:\(propertyName)") } free(properties)不过要注意,这种方式找到的很多是私有API对应的参数,用在上线的App里大概率会被App Store审核拒绝,只适合自己测试玩。
开发者社区经验总结
像Stack Overflow这类社区里,很多开发者会分享他们实测过的可用参数,但要注意时效性——iOS版本更新可能会废弃或更改这些非公开的键值。
关于backgroundColor的额外说明
你提到的backgroundColor并不是UIAlertAction的公开属性,官方也没有提供对应的合法forKey参数。之前有些版本能用私有键设置,但现在苹果对私有API的检测越来越严格,不建议这么做。如果一定要自定义Alert按钮的背景色,更稳妥的方案是自己封装一个自定义的AlertController控件,完全掌控样式,还能避免审核风险。
内容的提问来源于stack exchange,提问作者Ilonka Buwalda

