IOS8以上版本,使用UIAlertController代替 UIActionSheet和UIAlertView
2016-02-03 12:45
489 查看
苹果在IOS8版本上,新添加了一个UIAlertController用来代替 UIActionSheet 和 UIAlertView;
在工作中,会遇到修改这两个控件按钮颜色的要求,在网上一看,多是采用下边这种方法的:
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
{
DDLogDebug(@"%@",actionSheet.subviews);
for (UIView *subview in actionSheet.subviews)
{
if ([subview isKindOfClass:[UIButton class]])
{
UIButton *button = (UIButton *)subview;
[button setTitleColor:APP_TINT_COLOR forState:UIControlStateHighlighted];
[button setTitleColor:APP_TINT_COLOR forState:UIControlStateNormal];
[button setTitleColor:APP_TINT_COLOR forState:UIControlStateSelected];
}
}
}
但是在IOS8以后,无论是UIActionSheet、UIAlertView还是其他的一些控件的subviews就一直是空,不能返回任何UIView。所以在程序中根据系统版本采用不同的实现方式才是行之有效的,下面是UIAlertController的简单使用:
if ([[XWGlobalHelper systemVersion] intValue]
> 7.99) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil
message:nil
preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel
handler:^(UIAlertAction *
action) {}];
UIAlertAction* fromPhotoAction = [UIAlertAction actionWithTitle:@"从相册选择" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *
action) { UIImagePickerController *imagePicker
= [[UIImagePickerControlleralloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
// imagePicker.allowsEditing = YES;
imagePicker.allowsEditing = NO;
imagePicker.delegate = self;
[self presentViewController:imagePicker animated:YES completion:nil];
}];
UIAlertAction* fromCameraAction = [UIAlertAction actionWithTitle:@"相机" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *
action) {
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
// imagePicker.allowsEditing = YES;
imagePicker.allowsEditing = NO;
imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:imagePicker animated:YES completion:nil];
}
}];
[alertController addAction:cancelAction];
[alertController addAction:fromCameraAction];
[alertController addAction:fromPhotoAction];
[self presentViewController:alertController animated:YES completion:nil];
} else {
UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nilotherButtonTitles:@"相机",@"从相册选择", nil];
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
actionSheet.delegate = self;
[actionSheet showInView:self.view];
}
上边的UIAlertControllerStyleActionSheet指定了显示效果为之前版本的UIActionSheet,另外还有一个UIAlertControllerStyleAlert指定了显示效果为之前版本的UIAlertView!
在工作中,会遇到修改这两个控件按钮颜色的要求,在网上一看,多是采用下边这种方法的:
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
{
DDLogDebug(@"%@",actionSheet.subviews);
for (UIView *subview in actionSheet.subviews)
{
if ([subview isKindOfClass:[UIButton class]])
{
UIButton *button = (UIButton *)subview;
[button setTitleColor:APP_TINT_COLOR forState:UIControlStateHighlighted];
[button setTitleColor:APP_TINT_COLOR forState:UIControlStateNormal];
[button setTitleColor:APP_TINT_COLOR forState:UIControlStateSelected];
}
}
}
但是在IOS8以后,无论是UIActionSheet、UIAlertView还是其他的一些控件的subviews就一直是空,不能返回任何UIView。所以在程序中根据系统版本采用不同的实现方式才是行之有效的,下面是UIAlertController的简单使用:
if ([[XWGlobalHelper systemVersion] intValue]
> 7.99) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil
message:nil
preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel
handler:^(UIAlertAction *
action) {}];
UIAlertAction* fromPhotoAction = [UIAlertAction actionWithTitle:@"从相册选择" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *
action) { UIImagePickerController *imagePicker
= [[UIImagePickerControlleralloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
// imagePicker.allowsEditing = YES;
imagePicker.allowsEditing = NO;
imagePicker.delegate = self;
[self presentViewController:imagePicker animated:YES completion:nil];
}];
UIAlertAction* fromCameraAction = [UIAlertAction actionWithTitle:@"相机" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *
action) {
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
// imagePicker.allowsEditing = YES;
imagePicker.allowsEditing = NO;
imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:imagePicker animated:YES completion:nil];
}
}];
[alertController addAction:cancelAction];
[alertController addAction:fromCameraAction];
[alertController addAction:fromPhotoAction];
[self presentViewController:alertController animated:YES completion:nil];
} else {
UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nilotherButtonTitles:@"相机",@"从相册选择", nil];
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
actionSheet.delegate = self;
[actionSheet showInView:self.view];
}
上边的UIAlertControllerStyleActionSheet指定了显示效果为之前版本的UIActionSheet,另外还有一个UIAlertControllerStyleAlert指定了显示效果为之前版本的UIAlertView!
相关文章推荐
- 使用Excel PowerQuery和PowerPivot分析Dynamics CRM数据
- BZOJ 1570: [JSOI2008]Blue Mary的旅行( 二分答案 + 最大流 )
- Android 动画 ValueAnimator(一)
- JMS入门(三)--Queue的使用
- UIGraphicsBeginImageContext和UIGraphicsBeginImageContextWithOptions实现iOS中的截图功能
- UIScrollView 使用AutoLayout布局遇到的问题
- VBA中Dictionary对象使用(Key,Value)
- 7.12 Models -- Frequently Asked Questions
- valueof(), intvalue(0 parseint() 这三个方法怎么用
- 【项目经验】--EasyUI DataGrid之右键菜单
- 【项目经验】--EasyUI DataGrid之右键菜单
- iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)
- ionic build android Could not resolve com.android.tools.build:gradle:1.5.0
- SharePoint Server 2016 RC 版本输入Query之后无法返回Search Result的解决方案
- UI基础第一节试图控制器(MRC)
- [IOS 开发] 使用UIVisualEffectView实现模糊效果
- 【CERC2012】【BZOJ4059】Non-boring sequences
- Highlights of 22nd annual Screen Actors Guild Awards
- Fluentd 例子
- Visual Studio当中的Build、Rebuild和Clean