iOS开发 自定义UIAlertController的样式
2016-07-05 17:12
465 查看
字数595 阅读26 评论0 喜欢0
引言:
关于提示框, 系统自带的提示框有时可能满足不了我们的需求, 比如一个提示框的取消按钮我需要灰色字体显示, 这时候就需要自定义提示框的样式了。示例图
苹果自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
相关文章推荐
- 数学之美:Xbox评分系统TrueSkill
- RequireJs
- has been modified the precompiled header (路径)was built;
- 有关ajax表单序列化serialize()的问题
- java Map 基于Value值排序
- iOS 修改UIImage大小
- Entity Framework Code-First(10):Fluent API
- UITableView 或 UIScrollView 点击状态栏列表回到顶部
- UE4——HelloWorld
- leetcode_Count Numbers with Unique Digits
- 在webapi中使用request.Form
- Entity Framework Code-First(9.4):DataAnnotations - Required Attribute
- iOS开发:keychain存储UUID
- java 基础:Blocking Queues的源码实现
- easyui学习(1)
- 阿里面经之解答 by cmershen(3)——String/StringBuffer/StringBuilder,Java序列化,线程安全,线程同步,ThreadLocal
- UI碎片控件之Fragment——底部导航栏的实现(方法2)
- Number Sequence(poj 1019)
- DelayQueue
- UUID和UDID