iOS8发布也有半年之久了, 下面由小编给大家简单描述概述下关于iOS8的新特性:
UIAlertView 在iOS 8之前的iOS版本上运行的应用程序,使用UIAlertView类显示警告信息给用户。与其功能类似,但显示样式不同, 同为警告视图的是UIActionSheet类(详见回顾UIActionSheet) —— [iOS8.1 API]
相信UIAlertView对大家来说一定不陌生,因此小编在这里只带大家回顾一下UIAlertView的简单用法。
// 创建并初始化alert
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你该吃饭了" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
// 给alert添加文本输入框
alertView.alertViewStyle = UIAlertViewStylePlainTextInput;
// 给alert添加密文输入框
// alertView.alertViewStyle = UIAlertViewStyleSecureTextInput;
// 给alert添加登陆输入框
// alertView.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
// 显示alert
[alertView show];
其实, UIAlertView的用法很简单,也很实用。调用show方法就可以得到我们想要的。
// 创建一个UIActionSheet对象
UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"提示" delegate:nil cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:@"你猜", nil];
// 将action显示在要显示的view上
[action showInView:self.view];
UIActionSheet在iOS8中被弃用了,因此只是简单给大家介绍一下。我们的重点还是UIAlertController。
在iOS8中更新的UIAlertController将两种警告视图融合成了一个视图控制器,并且能够更好的定制,方便了开发人员。
UIAlertController = UIAlertView + UIActionSheet
查看UIAlertController的头文件,可得知其继承自UIViewController,因此它是一个视图控制器。如下图:
我们可得知该类有个类方法,用于让我们对其设置内容。
+ (instancetype)alertControllerWithTitle:(NSString *)title message:(NSString *)message preferredStyle:(UIAlertControllerStyle)preferredStyle;
该类方法方便我们设置提示的标题和提示内容,和我们所需要显示的样式。UIAlertControllerStyle是个枚举类型。
typedef NS_ENUM(NSInteger, UIAlertControllerStyle) {
UIAlertControllerStyleActionSheet = 0,
UIAlertControllerStyleAlert
} NS_ENUM_AVAILABLE_IOS(8_0);
由该枚举类型我们可以看出,UIAlertController有两种样式,分别是UIAlertControllerStyleActionSheet和UIAlertControllerStyleAlert
当我们选择UIAlertControllerStyleAlert时,并其加入到- (void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event方法中时
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"你该睡觉了" preferredStyle:UIAlertControllerStyleAlert];
运行程序,发现并没有任何反应,而且查看头文件发现UIAlertController并没有show方法,因为UIAlertController是一个视图控制器,则尝试使用模态推出的方式显示这个UIAlertController
[self presentViewController:alert animated:YES completion:^{ }];
再次运行,发现成功了
但是并没有像之前UIAlertView的一模一样,与之前不同的是,缺少了按钮。因为我们并没有添加按钮,再去查看头文件发现
- (void)addAction:(UIAlertAction *)action;
又多了一个新类UIAlertAction,我们试着创建一个并添加进去
// 创建一个UIAlertAction 选择其样式为UIAlertActionStyleDestructive(毁灭性的)
UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
}];
// 向UIAlertAction中添加action
[alert addAction:action];
运行之后,发现我们想要的按钮出来了,并且可以像ActionSheet那样显示红色的按钮文字。
初始化方法和显示方式都同上,只不过改一下样式,在此则不做代码展示了。
给大家看下运行后的结果
iOS8之后,将AlertView和ActionSheet规整成了一个视图控制器,方便了开发人员的自己定制自己想要的警告视图。