change UIAlertcontroller background Color

前端 未结 7 994
孤城傲影
孤城傲影 2021-02-02 15:09

Ok so I have this alert that I am using and I want the background of it to be black not grey like it is. I have managed to change the colour of the text for the title and the me

7条回答
  •  野性不改
    2021-02-02 15:20

    Swift 5
    Write just one line of code using UIAlertController extension.

    alertController.setBackgroundColor(color: UIColor.black)
    

    Full documentation: http://www.swiftdevcenter.com/change-font-text-color-and-background-color-of-uialertcontroller/

    extension UIAlertController {
    
        //Set background color of UIAlertController
        func setBackgroundColor(color: UIColor) {
            if let bgView = self.view.subviews.first, let groupView = bgView.subviews.first, let contentView = groupView.subviews.first {
                contentView.backgroundColor = color
            }
        }
    
        //Set title font and title color
        func setTitlet(font: UIFont?, color: UIColor?) {
            guard let title = self.title else { return }
            let attributeString = NSMutableAttributedString(string: title)//1
            if let titleFont = font {
                attributeString.addAttributes([NSAttributedString.Key.font : titleFont],//2
                                              range: NSMakeRange(0, title.utf8.count))
            }
    
            if let titleColor = color {
                attributeString.addAttributes([NSAttributedString.Key.foregroundColor : titleColor],//3
                                              range: NSMakeRange(0, title.utf8.count))
            }
            self.setValue(attributeString, forKey: "attributedTitle")//4
        }
    
        //Set message font and message color
        func setMessage(font: UIFont?, color: UIColor?) {
            guard let message = self.message else { return }
            let attributeString = NSMutableAttributedString(string: message)
            if let messageFont = font {
                attributeString.addAttributes([NSAttributedString.Key.font : messageFont],
                                              range: NSMakeRange(0, message.utf8.count))
            }
    
            if let messageColorColor = color {
                attributeString.addAttributes([NSAttributedString.Key.foregroundColor : messageColorColor],
                                              range: NSMakeRange(0, message.utf8.count))
            }
            self.setValue(attributeString, forKey: "attributedMessage")
        }
    
        //Set tint color of UIAlertController
        func setTint(color: UIColor) {
            self.view.tintColor = color
        }
    }
    

提交回复
热议问题