在Swift中设置UIAlertController的背景颜色

时间:2015-02-13 13:04:06

标签: ios swift interface-builder uialertcontroller

我正在使用新的UIAlertController为我的应用程序实现各种选项菜单。我试图获得UIAlertController的背景颜色以匹配我的应用程序的其余部分的主题。我的应用程序的主题非常简单,包含工具栏和导航栏的蓝色/灰色背景颜色的白色文本,如下所示:

enter image description here

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

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

这将UIAlertController更改为如下所示:

enter image description here

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

3 个答案:

答案 0 :(得分:7)

用于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

enter image description here

答案 1 :(得分:2)

在Swift中设置UIAlertController的背景颜色

你所要做的就是:

//创建警报控制器

...

//设置背景颜色

 class StringLengthEqualityComparer : IEqualityComparer<string>
        {

            public bool Equals(string x, string y)
            {
               ...
            }

            public int GetHashCode(string obj)
            {
               ...
            }
        }



 StringLengthEqualityComparer stringLengthComparer = new StringLengthEqualityComparer();
 var rezList = lst1.Except(lst2,stringLengthComparer ).Union(lst2.Except(lst1,stringLengthComparer),stringLengthComparer).ToList();

答案 2 :(得分:1)

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

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)