实现一个自定义UIAlertView控件

2017-03-30  本文已影响271人  PepperCurry

UIAlertview是项目中会非常频繁使用到的一种控件,然而苹果SDK提供的UIAlertView在iOS9中被废弃了,尽管还能用然而毕竟不是长久之计;而替代品UIAlertController又是在iOS8之后才启用;除此之外,原有的UIAlertView不能满足我的日常定制化需求,尤其是与公司设计同事设计出来的样式完全不一致,所以重写一个AlertView是前段时间的一个头等大事。

自己对这个控件的开发需求:

现在代码已经基本完成,放在了github上,敬请批评指正:LXAlertView

直接贴下实现后的效果图吧:
横向排版(默认颜色):

横向排版,默认颜色

纵向排版:

纵向排版,设置颜色

自定义view:


纵向排版,自定义内容

使用上也很简单,和UIAlertView一样的方法:
- (instancetype)initWithTitle:(NSString *)title
message:(NSString *)message
delegate:(id)delegate
cancelButtonTitle:(NSString *)cancelButtonTitle
otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION;

- (void)show;

@protocol LXAlertViewDelegate <NSObject>
@optional
    - (void)alertView:(LXAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
@end

除此之外,增加了block方法,方便使用

    [alert showWithCompletionBlock:^{
        NSLog(@"展示完成");
    } dismissBlock:^(LXAlertViewStruct result) {
        NSLog(@"alertViewTag:%li, buttonIndex:%li", result.alertTag, result.buttonIndex);
    }];

以上,有兴趣使用可以阅读源码,主要比较麻烦的地方就是在布局上的写法,后续还想加上对输入框的支持,敬请批评指正

上一篇 下一篇

猜你喜欢

热点阅读