首页 文章

UIAlertController自定义字体,大小,颜色

提问于
浏览
97

我正在使用新的UIAlertController来显示警报 . 我有这个代码:

// nil titles break alert interface on iOS 8.0, so we'll be using empty strings
UIAlertController *alert = [UIAlertController alertControllerWithTitle: title == nil ? @"": title message: message preferredStyle: UIAlertControllerStyleAlert];


UIAlertAction *defaultAction = [UIAlertAction actionWithTitle: cancelButtonTitle style: UIAlertActionStyleCancel handler: nil];

[alert addAction: defaultAction];

UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
[rootViewController presentViewController:alert animated:YES completion:nil];

现在我想更改 Headers 和消息字体,颜色,大小等 . 什么是最好的方法呢?

Edit: 我应该插入整个代码 . 我为UIView创建了一个类别,我可以为iOS版本显示正确的警报 .

@implementation UIView (AlertCompatibility)

+( void )showSimpleAlertWithTitle:( NSString * )title
                          message:( NSString * )message
                cancelButtonTitle:( NSString * )cancelButtonTitle
{
    float iOSVersion = [[UIDevice currentDevice].systemVersion floatValue];
    if (iOSVersion < 8.0f)
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle: title
                                                        message: message
                                                       delegate: nil
                                              cancelButtonTitle: cancelButtonTitle
                                              otherButtonTitles: nil];
        [alert show];
    }
    else
    {
        // nil titles break alert interface on iOS 8.0, so we'll be using empty strings
        UIAlertController *alert = [UIAlertController alertControllerWithTitle: title == nil ? @"": title
                                                                       message: message
                                                                preferredStyle: UIAlertControllerStyleAlert];


        UIAlertAction *defaultAction = [UIAlertAction actionWithTitle: cancelButtonTitle
                                                                style: UIAlertActionStyleCancel
                                                              handler: nil];

        [alert addAction: defaultAction];

        UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
        [rootViewController presentViewController:alert animated:YES completion:nil];
    }
}

22 回答

  • 0

    不确定这是针对私有API /属性,而是使用KVC在ios8上为我工作

    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Dont care what goes here, since we're about to change below" message:@"" preferredStyle:UIAlertControllerStyleActionSheet];
    NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan!"];
    [hogan addAttribute:NSFontAttributeName
                  value:[UIFont systemFontOfSize:50.0]
                  range:NSMakeRange(24, 11)];
    [alertVC setValue:hogan forKey:@"attributedTitle"];
    
    
    
    UIAlertAction *button = [UIAlertAction actionWithTitle:@"Label text" 
                                            style:UIAlertActionStyleDefault
                                            handler:^(UIAlertAction *action){
                                                        //add code to make something happen once tapped
    }];
    UIImage *accessoryImage = [UIImage imageNamed:@"someImage"];
    [button setValue:accessoryImage forKey:@"image"];
    

    对于记录,也可以使用这些私有API更改警报操作的字体 . 再次,它可能会让你的应用被拒绝,我还没有尝试提交这样的代码 .

    let alert = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)
    
    let action = UIAlertAction(title: "Some title", style: .Default, handler: nil)
    let attributedText = NSMutableAttributedString(string: "Some title")
    
    let range = NSRange(location: 0, length: attributedText.length)
    attributedText.addAttribute(NSKernAttributeName, value: 1.5, range: range)
    attributedText.addAttribute(NSFontAttributeName, value: UIFont(name: "ProximaNova-Semibold", size: 20.0)!, range: range)
    
    alert.addAction(action)
    
    presentViewController(alert, animated: true, completion: nil)
    
    // this has to be set after presenting the alert, otherwise the internal property __representer is nil
    guard let label = action.valueForKey("__representer")?.valueForKey("label") as? UILabel else { return }
    label.attributedText = attributedText
    

    对于XCode 10中的Swift 4.2,现在最后两行是:

    guard let label = (action!.value(forKey: "__representer")as? NSObject)?.value(forKey: "label") as? UILabel else { return }
            label.attributedText = attributedText
    
  • 8

    您可以通过将色调颜色应用于UIAlertController来更改按钮颜色 .

    在iOS 9上,如果窗口色调颜色设置为自定义颜色,则必须在显示警报后立即应用色调颜色 . 否则,色调颜色将重置为您的自定义窗口色调颜色 .

    // In your AppDelegate for example:
    window?.tintColor = UIColor.redColor()
    
    // Elsewhere in the App:
    let alertVC = UIAlertController(title: "Title", message: "message", preferredStyle: .Alert)
    alertVC.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
    alertVC.addAction(UIAlertAction(title: "Ok", style: .Default, handler: nil))
    
    // Works on iOS 8, but not on iOS 9
    // On iOS 9 the button color will be red
    alertVC.view.tintColor = UIColor.greenColor()
    
    self.presentViewController(alert, animated: true, completion: nil)
    
    // Necessary to apply tint on iOS 9
    alertVC.view.tintColor = UIColor.greenColor()
    
  • 60

    您可以使用以下代码更改按钮文本的颜色:

    alertC.view.tintColor = your color;
    

    也许这会对你有所帮助 .

  • 3

    在Xcode 8 Swift 3.0中

    @IBAction func touchUpInside(_ sender: UIButton) {
    
        let alertController = UIAlertController(title: "", message: "", preferredStyle: .alert)
    
        //to change font of title and message.
        let titleFont = [NSFontAttributeName: UIFont(name: "ArialHebrew-Bold", size: 18.0)!]
        let messageFont = [NSFontAttributeName: UIFont(name: "Avenir-Roman", size: 12.0)!]
    
        let titleAttrString = NSMutableAttributedString(string: "Title Here", attributes: titleFont)
        let messageAttrString = NSMutableAttributedString(string: "Message Here", attributes: messageFont)
    
        alertController.setValue(titleAttrString, forKey: "attributedTitle")
        alertController.setValue(messageAttrString, forKey: "attributedMessage")
    
        let action1 = UIAlertAction(title: "Action 1", style: .default) { (action) in
            print("\(action.title)")
        }
    
        let action2 = UIAlertAction(title: "Action 2", style: .default) { (action) in
            print("\(action.title)")
        }
    
        let action3 = UIAlertAction(title: "Action 3", style: .default) { (action) in
            print("\(action.title)")
        }
    
        let okAction = UIAlertAction(title: "Ok", style: .default) { (action) in
            print("\(action.title)")
        }
    
        alertController.addAction(action1)
        alertController.addAction(action2)
        alertController.addAction(action3)
        alertController.addAction(okAction)
    
        alertController.view.tintColor = UIColor.blue
        alertController.view.backgroundColor = UIColor.black
        alertController.view.layer.cornerRadius = 40
    
        present(alertController, animated: true, completion: nil)
    
    }
    

    Output

    UIAlertController custom font, size and color

  • 23

    @ dupuis2387答案的快速翻译 . 算法使用 attributedTitle 键通过KVC设置 UIAlertController Headers 的颜色和字体 .

    let message = "Some message goes here."
    let alertController = UIAlertController(
        title: "", // This gets overridden below.
        message: message,
        preferredStyle: .Alert
    )
    let okAction = UIAlertAction(title: "OK", style: .Cancel) { _ -> Void in
    }
    alertController.addAction(okAction)
    
    let fontAwesomeHeart = "\u{f004}"
    let fontAwesomeFont = UIFont(name: "FontAwesome", size: 17)!
    let customTitle:NSString = "I \(fontAwesomeHeart) Swift" // Use NSString, which lets you call rangeOfString()
    let systemBoldAttributes:[String : AnyObject] = [ 
        // setting the attributed title wipes out the default bold font,
        // so we need to reconstruct it.
        NSFontAttributeName : UIFont.boldSystemFontOfSize(17)
    ]
    let attributedString = NSMutableAttributedString(string: customTitle as String, attributes:systemBoldAttributes)
    let fontAwesomeAttributes = [
        NSFontAttributeName: fontAwesomeFont,
        NSForegroundColorAttributeName : UIColor.redColor()
    ]
    let matchRange = customTitle.rangeOfString(fontAwesomeHeart)
    attributedString.addAttributes(fontAwesomeAttributes, range: matchRange)
    alertController.setValue(attributedString, forKey: "attributedTitle")
    
    self.presentViewController(alertController, animated: true, completion: nil)
    

    enter image description here

  • 0

    使用 UIAppearance 协议 . 设置字体的示例 - 创建要扩展的类别 UILabel

    @interface UILabel (FontAppearance)
    @property (nonatomic, copy) UIFont * appearanceFont UI_APPEARANCE_SELECTOR;
    @end
    
    
    @implementation UILabel (FontAppearance)
    
    -(void)setAppearanceFont:(UIFont *)font {
        if (font)
            [self setFont:font];
    }
    
    -(UIFont *)appearanceFont {
        return self.font;
    }
    
    @end
    

    它的用法:

    UILabel * appearanceLabel = [UILabel appearanceWhenContainedIn:UIAlertController.class, nil];
    [appearanceLabel setAppearanceFont:[UIFont boldSystemFontOfSize:10]]; //for example
    

    测试并使用样式 UIAlertControllerStyleActionSheet ,但我想它也适用于 UIAlertControllerStyleAlert .

    附:更好地检查类可用性而不是iOS版本:

    if ([UIAlertController class]) {
        // UIAlertController code (iOS 8)
    } else {
        // UIAlertView code (pre iOS 8)
    }
    
  • 3

    使用 UIAppearance 协议 . 使用 appearanceFont 进行更多修改以更改 UIAlertAction 的字体 .

    UILabel 创建一个类别

    UILabel FontAppearance.h

    @interface UILabel (FontAppearance)
    
    @property (nonatomic, copy) UIFont * appearanceFont UI_APPEARANCE_SELECTOR;
    
    @end
    

    UILabel FontAppearance.m

    @implementation UILabel (FontAppearance)
    
    - (void)setAppearanceFont:(UIFont *)font
    {
        if (self.tag == 1001) {
            return;
        }
    
        BOOL isBold = (self.font.fontDescriptor.symbolicTraits & UIFontDescriptorTraitBold);
        const CGFloat* colors = CGColorGetComponents(self.textColor.CGColor);
    
        if (self.font.pointSize == 14) {
            // set font for UIAlertController title
            self.font = [UIFont systemFontOfSize:11];
        } else if (self.font.pointSize == 13) {
            // set font for UIAlertController message
            self.font = [UIFont systemFontOfSize:11];
        } else if (isBold) {
            // set font for UIAlertAction with UIAlertActionStyleCancel
            self.font = [UIFont systemFontOfSize:12];
        } else if ((*colors) == 1) {
            // set font for UIAlertAction with UIAlertActionStyleDestructive
            self.font = [UIFont systemFontOfSize:13];
        } else {
            // set font for UIAlertAction with UIAlertActionStyleDefault
            self.font = [UIFont systemFontOfSize:14];
        }
        self.tag = 1001;
    }
    
    - (UIFont *)appearanceFont
    {
        return self.font;
    }
    
    @end
    

    用法:

    [[UILabel appearanceWhenContainedIn:UIAlertController.class, nil] setAppearanceFont:nil];

    AppDelegate.m 中使其适用于所有 UIAlertController .

  • 1

    我正在使用它 .

    [[UIView appearanceWhenContainedIn:[UIAlertController class], nil] setTintColor:[UIColor blueColor]];
    

    添加一行(AppDelegate)并适用于所有UIAlertController .

  • 11

    Swift 4

    Headers 上的自定义字体示例 . 消息或操作等其他组件也是如此 .

    let titleAttributed = NSMutableAttributedString(
                string: Constant.Strings.cancelAbsence, 
                attributes: [NSAttributedStringKey.font:UIFont(name:"FONT_NAME",size: FONT_SIZE)]
        )
    
        let alertController = UIAlertController(
            title: "",
            message: "",
            preferredStyle: UIAlertControllerStyle.YOUR_STYLE
        )
    
        alertController.setValue(titleAttributed, forKey : "attributedTitle")
        present(alertController, animated: true, completion: nil)
    
  • 10

    在呈现后在视图上设置色调颜色存在问题;即使你在presentViewController:animated:completion:的完成块中执行它,它也会对按钮 Headers 的颜色产生闪烁效果 . 这是草率的,不专业的,完全不可接受的 .

    提出的其他解决方案取决于视图层次结构保持静态,这是Apple不愿意做的事情 . 预计这些解决方案将在未来的iOS版本中失败 .

    解决这个问题并在任何地方进行的一种确定的方法是通过向UIAlertController添加一个类别并调用viewWillAppear .

    Headers :

    //
    //  UIAlertController+iOS9TintFix.h
    //
    //  Created by Flor, Daniel J on 11/2/15.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface UIAlertController (iOS9TintFix)
    
    + (void)tintFix;
    
    - (void)swizzledViewWillAppear:(BOOL)animated;
    
    @end
    

    实施:

    //
    //  UIAlertController+iOS9TintFix.m
    //
    //  Created by Flor, Daniel J on 11/2/15.
    //
    
    #import "UIAlertController+iOS9TintFix.h"
    #import <objc/runtime.h>
    
    @implementation UIAlertController (iOS9TintFix)
    
    + (void)tintFix {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            Method method  = class_getInstanceMethod(self, @selector(viewWillAppear:));
            Method swizzle = class_getInstanceMethod(self, @selector(swizzledViewWillAppear:));
            method_exchangeImplementations(method, swizzle);});
    }
    
    - (void)swizzledViewWillAppear:(BOOL)animated {
        [self swizzledViewWillAppear:animated];
        for (UIView *view in self.view.subviews) {
            if (view.tintColor == self.view.tintColor) {
                //only do those that match the main view, so we don't strip the red-tint from destructive buttons.
                self.view.tintColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0];
                [view setNeedsDisplay];
            }
        }
    }
    
    @end
    

    将.pch(预编译头)添加到项目中并包含以下类别:

    #import "UIAlertController+iOS9TintFix.h"
    

    确保在项目中正确注册pch,并且它将在每个使用UIAlertController的类中包含类别方法 .

    然后,在你的app代理中使用didFinishLaunchingWithOptions方法,导入你的类别并调用

    [UIAlertController tintFix];
    

    并且它会自动传播到您应用程序中的每个UIAlertController实例,无论是由您的代码还是其他任何人启动的 .

    此解决方案适用于iOS 8.X和iOS 9.X,并且缺少色彩更改后呈现方法的闪烁 . 对于UIAlertController的子视图的视图层次结构,它也是完全不可知的 .

    快乐的黑客!

  • 25

    我刚刚完成了 UIAlertController 的替换 . This是唯一合理的方式,我认为:


    这是我在Swift中的方法,它从这里的答案中汲取了大量信息

    func changeAlert(alert: UIAlertController, backgroundColor: UIColor, textColor: UIColor, buttonColor: UIColor?) {
        let view = alert.view.firstSubview().firstSubview()
        view.backgroundColor = backgroundColor
        view.layer.cornerRadius = 10.0
    
        // set color to UILabel font
        setSubviewLabelsToTextColor(textColor, view: view)
    
        // set font to alert via KVC, otherwise it'll get overwritten
        let titleAttributed = NSMutableAttributedString(
            string: alert.title!,
            attributes: [NSFontAttributeName:UIFont.boldSystemFontOfSize(17)])
        alert.setValue(titleAttributed, forKey: "attributedTitle")
    
    
        let messageAttributed = NSMutableAttributedString(
            string: alert.message!,
            attributes: [NSFontAttributeName:UIFont.systemFontOfSize(13)])
        alert.setValue(messageAttributed, forKey: "attributedMessage")
    
    
        // set the buttons to non-blue, if we have buttons
        if let buttonColor = buttonColor {
            alert.view.tintColor = buttonColor
        }
    }
    
    func setSubviewLabelsToTextColor(textColor: UIColor, view:UIView) {
        for subview in view.subviews {
            if let label = subview as? UILabel {
                label.textColor = textColor
            } else {
                setSubviewLabelsToTextColor(textColor, view: subview)
            }
        }
    }
    

    这在某些情况下非常有效,而在其他情况下则完全失败(色调颜色未按预期显示) .

  • 2

    解决方案/ Hack for iOS9

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Test Error" message:@"This is a test" preferredStyle:UIAlertControllerStyleAlert];
    
        UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
            NSLog(@"Alert View Displayed");
     [[[[UIApplication sharedApplication] delegate] window] setTintColor:[UIColor whiteColor]];
        }];
    
        [alertController addAction:cancelAction];
        [[[[UIApplication sharedApplication] delegate] window] setTintColor:[UIColor blackColor]];
        [self presentViewController:alertController animated:YES completion:^{
            NSLog(@"View Controller Displayed");
        }];
    
  • 39

    您可以使用像PMAlertController这样的外部库而无需使用解决方法,您可以使用超级自定义警报替换Apple的不可自定义的UIAlertController .

    Compatible with Xcode 8, Swift 3 and Objective-C

    PMAlertController example

    特点:

    • [x] Headers 视图

    • [x] Headers 图片(可选)

    • [x] Headers

    • [x]说明消息

    • [x]自定义:字体,颜色,尺寸等

    • [x] 1,2个按钮(水平)或3个按钮(垂直)

    • [x]按下按钮时关闭

    • [x]文本字段支持

    • [x]与UIAlertController类似的实现

    • [x] Cocoapods

    • [x]迦太基

    • [x]使用UIKit Dynamics进行动画制作

    • [x] Objective-C兼容性

    • [x] Swift 2.3和Swift 3支持

  • 0

    我在Urban Outfitters工作 . 我们有一个开源pod, URBNAlert ,我们在所有应用程序中都使用了它 . 它基于 UIAlertController ,但可高度自定义 .

    来源在这里:https://github.com/urbn/URBNAlert

    或者只需在您的Podfile中放置 URBNAlert 即可通过pod进行安装

    下面是一些示例代码:

    URBNAlertViewController *uac = [[URBNAlertViewController alloc] initWithTitle:@"The Title of my message can be up to 2 lines long. It wraps and centers." message:@"And the message that is a bunch of text. And the message that is a bunch of text. And the message that is a bunch of text."];
    
    // You can customize style elements per alert as well. These will override the global style just for this alert.
    uac.alertStyler.blurTintColor = [[UIColor orangeColor] colorWithAlphaComponent:0.4];
    uac.alertStyler.backgroundColor = [UIColor orangeColor];
    uac.alertStyler.textFieldEdgeInsets = UIEdgeInsetsMake(0.0, 15.0, 0.0, 15.0);
    uac.alertStyler.titleColor = [UIColor purpleColor];
    uac.alertStyler.titleFont = [UIFont fontWithName:@"Chalkduster" size:30];
    uac.alertStyler.messageColor = [UIColor blackColor];
    uac.alertStyler.alertMinWidth = @150;
    uac.alertStyler.alertMaxWidth = @200;
    // many more styling options available 
    
    [uac addAction:[URBNAlertAction actionWithTitle:@"Ok" actionType:URBNAlertActionTypeNormal actionCompleted:^(URBNAlertAction *action) {
          // Do something
    }]];
    
    [uac addAction:[URBNAlertAction actionWithTitle:@"Cancel" actionType:URBNAlertActionTypeCancel actionCompleted:^(URBNAlertAction *action) {
          // Do something
    }]];
    
    [uac show];
    
  • 8

    请找this类别 . 我能够改变UIAlertAction和UIAlertController的FONT和Color .

    使用:

    UILabel * appearanceLabel = [UILabel appearanceWhenContainedIn:UIAlertController.class, nil];
    [appearanceLabel setAppearanceFont:yourDesireFont]];
    
  • 1

    这是Swift 4.1和Xcode 9.4.1的扩展:

    extension UIAlertController{
    
    func addColorInTitleAndMessage(color:UIColor,titleFontSize:CGFloat = 18, messageFontSize:CGFloat = 13){
    
        let attributesTitle = [NSAttributedStringKey.foregroundColor: color, NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: titleFontSize)]
        let attributesMessage = [NSAttributedStringKey.foregroundColor: color, NSAttributedStringKey.font: UIFont.systemFont(ofSize: messageFontSize)]
        let attributedTitleText = NSAttributedString(string: self.title ?? "", attributes: attributesTitle)
        let attributedMessageText = NSAttributedString(string: self.message ?? "", attributes: attributesMessage)
    
        self.setValue(attributedTitleText, forKey: "attributedTitle")
        self.setValue(attributedMessageText, forKey: "attributedMessage")
    
    }}
    
  • 90

    有点笨重,但现在我可以设置背景和文字颜色 . 我发现它here .

    UIView * firstView = alertController.view.subviews.firstObject;
        UIView * nextView = firstView.subviews.firstObject;
        nextView.backgroundColor = [UIColor blackColor];
    
  • 1

    要将一个按钮(如CANCEL)的颜色更改为红色,您可以使用名为UIAlertActionStyle.destructive的样式属性:

    let prompt = UIAlertController.init(title: "Reset Password", message: "Enter Your E-mail :", preferredStyle: .alert)
            let okAction = UIAlertAction.init(title: "Submit", style: .default) { (action) in
                  //your code
    }
    
    let cancelAction = UIAlertAction.init(title: "Cancel", style: UIAlertActionStyle.destructive) { (action) in
                    //your code
            }
            prompt.addTextField(configurationHandler: nil)
            prompt.addAction(okAction)
            prompt.addAction(cancelAction)
            present(prompt, animated: true, completion: nil);
    
  • 0

    我创建了一个方法Objective-C

    -(void)customAlertTitle:(NSString*)title message:(NSString*)message{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:nil cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil];
    UIView *subView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 80)];
    
    UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 270, 50)];
    titleLabel.text = title;
    titleLabel.font = [UIFont boldSystemFontOfSize:20];
    titleLabel.numberOfLines = 2;
    titleLabel.textColor = [UIColor redColor];
    titleLabel.textAlignment = NSTextAlignmentCenter;
    
    [subView addSubview:titleLabel];
    
    UILabel *messageLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 30, 270, 50)];
    messageLabel.text = message;
    messageLabel.font = [UIFont systemFontOfSize:18];
    messageLabel.numberOfLines = 2;
    messageLabel.textColor = [UIColor redColor];
    messageLabel.textAlignment = NSTextAlignmentCenter;
    
    [subView addSubview:messageLabel];
    
    [alertView setValue:subView forKey:@"accessoryView"];
    [alertView show];
    }
    

    代码在Xcode 8.3.1上完美地运行 . 您可以根据需要定制 .

  • 2

    我只是使用这种需求,看似和系统,细节略有不同,所以我们...... OC实现了Alert和Sheet弹出窗口封装 .

    在日常开发中经常遇到需要添加一个数字来提醒或更改按钮颜色,如“简单”需求,今天带来的和系统组件高度相似,可以完全满足定制包装组件的需求 .

    Github:https://github.com/ReverseScale/RSCustomAlertView

  • 0

    对于iOS 9.0及更高版本,请在app delegate中使用此代码

    [[UIView appearanceWhenContainedInInstancesOfClasses:@[[UIAlertController class]]] setTintColor:[UIColor redColor]];
    
  • 0

    在Swift 4.1和Xcode 9.4.1中

    //Displaying alert with multiple actions and custom font ans size
    let alert = UIAlertController(title: "", message: "", preferredStyle: .alert)
    
    let titFont = [NSAttributedStringKey.font: UIFont(name: "ArialHebrew-Bold", size: 15.0)!]
    let msgFont = [NSAttributedStringKey.font: UIFont(name: "Avenir-Roman", size: 13.0)!]
    
    let titAttrString = NSMutableAttributedString(string: "Title Here", attributes: titFont)
    let msgAttrString = NSMutableAttributedString(string: "Message Here", attributes: msgFont)
    
    alert.setValue(titAttrString, forKey: "attributedTitle")
    alert.setValue(msgAttrString, forKey: "attributedMessage")
    
    let action1 = UIAlertAction(title: "Action 1", style: .default) { (action) in
        print("\(String(describing: action.title))")
    }
    
    let action2 = UIAlertAction(title: "Action 2", style: .default) { (action) in
        print("\(String(describing: action.title))")
    }
    
    let okAction = UIAlertAction(title: "Ok", style: .default) { (action) in
        print("\(String(describing: action.title))")
    }
    alert.addAction(action1)
    alert.addAction(action2)
    alert.addAction(okAction)
    
    alert.view.tintColor = UIColor.blue
    alert.view.layer.cornerRadius = 40
    // //If required background colour 
    // alert.view.backgroundColor = UIColor.white
    
    DispatchQueue.main.async(execute: {
        self.present(alertController, animated: true)
    })
    

相关问题