IOS8以上版本,使用UIAlertController代替 UIActionSheet和UIAlertView

    xiaoxiao2021-03-25  146

    IOS8以上版本,使用UIAlertController代替 UIActionSheet和UIAlertView

    标签: IOSUIAlertControllerUIActionSheet按钮颜色   9026人阅读  评论(0)  收藏  举报   分类: IOS(26) 

    苹果在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 systemVersionintValue] > 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 = [[UIImagePickerControllerallocinit];

                                                                         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 allocinit];

                                                                        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 allocinitWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nilotherButtonTitles:@"相机",@"从相册选择"nil];

            actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;

            actionSheet.delegate = self;

            [actionSheet showInView:self.view];

        }

    上边的UIAlertControllerStyleActionSheet指定了显示效果为之前版本的 UIActionSheet,另外还有一个UIAlertControllerStyleAlert指定了显示效果为之前版本的UIAlertView!
    转载请注明原文地址: https://ju.6miu.com/read-3524.html

    最新回复(0)