我是iOS开发的新手。
我正在尝试更改UIAlertController的标题和消息颜色,但是不起作用,颜色没有改变。
这是我的代码:
let alert = UIAlertController(title: NSLocalizedString("notifications_popup2_title", comment: ""), message: NSLocalizedString("notifications_popup2_message", comment: ""), preferredStyle: UIAlertControllerStyle.actionSheet)
// Change font of the title and message
let titleFont:[NSAttributedStringKey : AnyObject] = [ NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue) : UIFont(name: "Flama-Basic", size: 22)!, NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue) : UIColor(hexString: "#2e2e2e")! ]
let messageFont:[NSAttributedStringKey : AnyObject] = [ NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue) : UIFont(name: "Flama-light", size: 18)!, NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue) : UIColor(hexString: "#2e2e2e")! ]
let attributedTitle = NSMutableAttributedString(string: NSLocalizedString("notifications_popup2_title", comment: ""), attributes: titleFont)
let attributedMessage = NSMutableAttributedString(string: NSLocalizedString("notifications_popup2_message", comment: ""), attributes: messageFont)
alert.setValue(attributedTitle, forKey: "attributedTitle")
alert.setValue(attributedMessage, forKey: "attributedMessage")
如果我将警报样式更改为.alert
,则可以正常工作...
答案 0 :(得分:1)
您不赞成使用某些代码,例如:
NSAttributedStringKey
现在是:
NSAttributedString.Key
您也无需指定rawValue
。您只需要以下内容:
let alertController = UIAlertController(title: "title", message: "message", preferredStyle: .alert)
alertController.setValue(NSAttributedString(string: "title", attributes: [.foregroundColor : UIColor.red]), forKey: "attributedTitle")
alertController.setValue(NSAttributedString(string: "message", attributes: [.foregroundColor : UIColor.blue]), forKey: "attributedMessage")
请注意,它仅适用于.alert
。与.actionSheet
.alert
标题和消息没有颜色
还注意:使用私有API可能会导致拒绝。但是经验表明,只有名称以“ _”开头的私有方法才会导致 AppStore私有方法使用检测系统被拒绝。
如果苹果决定对其进行更改,也也可以随时停止工作。
您最好的选择是自己实施自定义提醒。