更改UIAlertController的标题颜色

时间:2019-11-29 16:07:28

标签: ios swift xcode

我是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,则可以正常工作...

enter image description here

1 个答案:

答案 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

请注意,它仅适用于.alert。与.actionSheet

不同,.alert标题和消息没有颜色

注意:使用私有API可能会导致拒绝。但是经验表明,只有名称以“ _”开头的私有方法才会导致 AppStore私有方法使用检测系统被拒绝。

如果苹果决定对其进行更改,

也可以随时停止工作。

您最好的选择是自己实施自定义提醒。