美文网首页
IOS 自定义AlertController

IOS 自定义AlertController

作者: DoubleMoonBird | 来源:发表于2017-11-22 09:44 被阅读0次

    1.前言

    项目中要自定义提示框,参考了一些文章,然后自己写了一个。


    QQ20171122-094248.gif

    2实现

    • 系统的UIAlertController的使用

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"这是一个》> alert" message:@"又如何?" preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
    [alert addAction:cancel];
    [self presentViewController:alert animated:YES completion:nil];

    UIAlertController是继承UIViewController的。我们定义一个viewcontroller,然后present。

    • 在调用[self presentViewController:alert animated:YES completion:nil]的时候,会发现系统已经给你做好了一个动画,是从底部往上弹,还有就是原来的view controller(也就是[self presentViewController:alert animated:YES completion:nil]中的self)不见了,我们要的不是这样的效果。这里presentViewController使用的是Modal转场,UIKit 已经为 Modal 转场实现了多种效果,当 UIViewController的modalPresentationStyle属性为UIModalPresentationCustom或UIModalPresentationFullScreen时,我们就有机会定制转场效果,此时modalTransitionStyle指定的转场动画将会被忽略。因此我们需要改写modalPresentationStyle的默认属性值,默认是UIModalTransitionStyleCoverVertical,也就是从下往上,原来的view controller不见了的形式。

    +(instancetype)BPAlertControllerWithTitle:(NSString *)title message:(NSString *)message cancel:(NSString *)cancel sure:(NSString *)sure action:(void (^)(void))buttonAction{

    BPAlertController *alert = [[BPAlertController alloc] init];

    alert.modalPresentationStyle = UIModalPresentationCustom;
    alert.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    alert.titleText = title;
    alert.messageText = message;
    alert.cancelText = cancel&&cancel.length>0 ? cancel : @"取消";
    alert.sureText = sure;
    alert.buttonAction = buttonAction;

    return alert;
    }

    3.GIT地址

    我的DEMO

    相关文章

      网友评论

          本文标题:IOS 自定义AlertController

          本文链接:https://www.haomeiwen.com/subject/fwywvxtx.html