在 Swift 中设置 UIAlertController 的背景颜色

Setting background color for UIAlertController in Swift

我正在使用新的 UIAlertController 为我的应用程序实现各种选项菜单。我试图让 UIAlertController 的背景颜色与我的应用程序其余部分的主题相匹配。我的应用程序的主题非常简单,由白色文本组成,工具栏和导航栏的背景色为 blue/grey,如下所示:

但是,我在尝试让我的 UIAlertController 符合这个主题时遇到了一些麻烦。我进行了以下两次设置文本和背景颜色的调用:

uiAlertController.view.backgroundColor = UIColor(red: CGFloat(.17255), green: CGFloat(.24314), blue: CGFloat(.31373), alpha: CGFloat(1.0))
uiAlertController.view.tintColor = UIColor.whiteColor()

这将 UIAlertController 更改为如下所示:

文字由默认的蓝色系统颜色更改为白色,但背景颜色不正确。我还尝试修改指定的不透明度 (uiAlertController.view.opaque = true),但这也无济于事。我该如何设置背景颜色,使其与我的导航栏和工具栏相匹配?谢谢

我遇到了同样的问题。结果我需要像这样遍历子视图树:

var subView = alertController.view.subviews.first as! UIView
var contentView = subView.subviews.first as! UIView
contentView.backgroundColor = UIColor(red: 233.0/255.0, green: 133.0/255.0, blue: 49.0/255.0, alpha: 1.0)

在 Swift

中设置 UIAlertController 的背景颜色

你所要做的就是:

//创建你的警报控制器

...

//设置背景颜色

let backView = yourAlertController.view.subviews.last?.subviews.last
backView?.layer.cornerRadius = 10.0
backView?.backgroundColor = UIColor.yellowColor() 

self.presentViewController(yourAlertController, animated: true, completion: nil);

对于 Swift 3 Xcode 8.2.1

let subview = (alert.view.subviews.first?.subviews.first?.subviews.first!)! as UIView

                subview.backgroundColor = UIColor(red: (145/255.0), green: (200/255.0), blue: (0/255.0), alpha: 1.0)

                alert.view.tintColor = UIColor.black