zoukankan      html  css  js  c++  java
  • iOS开发 自定义UIAlertController的样式

    引言:

    关于提示框, 系统自带的提示框有时可能满足不了我们的需求, 比如一个提示框的取消按钮我需要灰色字体显示, 这时候就需要自定义提示框的样式了。


    示例图

    苹果自iOS8开始,就已经废弃了之前用于界面提醒的UIAlertView类以及UIActionSheet,取而代之的是UIAlertController以及UIAlertAction,从实际使用情况来看,苹果把之前不同类型/样式的通知实现方法进行了统一,简化了有关提醒功能的实现。

    UIAlertController的基本使用

    一个简单的提示框:

        UIAlertController *alert    = [UIAlertController alertControllerWithTitle:@"标题" message:@"正文" preferredStyle:(UIAlertControllerStyleAlert)];
    
        UIAlertAction *okAction     = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
            // 点击确定按钮时 要进行的操作可以写到这里
        }];
        UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:^(UIAlertAction * _Nonnull action) {
            // 点击取消按钮时 要进行的操作可以写到这里
        }];
    
        [alert addAction:cancelAction];
        [alert addAction:okAction];
    
        [self presentViewController:alert animated:YES completion:nil];

    自定义UIAlertController

    主要是使用kvc的方式来自定义UIAlertController的样式:

        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"标题" message:@"内容" preferredStyle:UIAlertControllerStyleAlert];
    
        // 使用富文本来改变alert的title字体大小和颜色
        NSMutableAttributedString *titleText = [[NSMutableAttributedString alloc] initWithString:@"这里是标题"];
        [titleText addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:24] range:NSMakeRange(0, 2)];
        [titleText addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 2)];
        [alert setValue:titleText forKey:@"attributedTitle"];
    
        // 使用富文本来改变alert的message字体大小和颜色
        // NSMakeRange(0, 2) 代表:从0位置开始 两个字符
        NSMutableAttributedString *messageText = [[NSMutableAttributedString alloc] initWithString:@"这里是正文信息"];
        [messageText addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:10] range:NSMakeRange(0, 6)];
        [messageText addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 2)];
        [messageText addAttribute:NSForegroundColorAttributeName value:[UIColor brownColor] range:NSMakeRange(3, 3)];
        [alert setValue:messageText forKey:@"attributedMessage"];
    
    
        UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
    
        // 设置按钮背景图片
        UIImage *accessoryImage = [[UIImage imageNamed:@"selectRDImag.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        [cancelAction setValue:accessoryImage forKey:@"image"];
    
        // 设置按钮的title颜色
        [cancelAction setValue:[UIColor lightGrayColor] forKey:@"titleTextColor"];
    
        // 设置按钮的title的对齐方式
        [cancelAction setValue:[NSNumber numberWithInteger:NSTextAlignmentLeft] forKey:@"titleTextAlignment"];
    
        UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:nil];
    
        [alert addAction:okAction];
        [alert addAction:cancelAction];
    
        [self presentViewController:alert animated:YES completion:nil];

    效果图:


    效果图

    demo下载地址:CustomAlertControllerDemo





    原文链接:http://www.jianshu.com/p/a0785cb0601b
  • 相关阅读:
    POJ 3071 概率DP
    BZOJ 2427 /HAOI 2010 软件安装 tarjan缩点+树形DP
    POJ 1155 树形DP
    POJ 3252 组合数学?
    POJ 3641 快速幂
    POJ 3180 Tarjan
    POJ 3185 DFS
    POJ 3260 DP
    POJ 2392 DP
    99. Recover Binary Search Tree
  • 原文地址:https://www.cnblogs.com/Jenaral/p/5938792.html
Copyright © 2011-2022 走看看