iOS系统弹框封装 一句代码实现中间和底部弹框

来源:互联网 发布:喜马拉雅 兼职 知乎 编辑:程序博客网 时间:2024/06/18 16:36

//

//  ZFSAlertView.h

//  test

//

//  Created by HandsomeC on 2017/12/11.

//  Copyright © 2017年 赵发生. All rights reserved.

//


#import <UIKit/UIKit.h>


typedef NS_ENUM(NSInteger,ZFSAlertViewStyle) {

ZFSAlertViewAlert = 0,//中间弹框

ZFSAlertViewSheet,//底部弹框

};


typedef void (^clickBlock)(NSInteger itemIndex);


@interface ZFSAlertView : UIView



/*

 

 调用的时候回调实在闭包里面,请注意避免循环引用

 

 */


/**

 弹框封装


 @param title 标题

 @param message 信息

 @param cancelTitle 取消按钮文字

 @param actionsArr 按钮数组

 @param style 弹框类型(中间或者是底部)

 @param controller 弹出视图的父视图

 @param itemBlock 回调

 */

+ (void)AlertViewWithTitle:(NSString *)title message:(NSString *)message cancelTitle:(NSString *)cancelTitle acitons:(NSArray *)actionsArr style:(ZFSAlertViewStyle)style inView:(UIViewController*)controller itemblock:(clickBlock)itemBlock;


@end




//

//  ZFSAlertView.m

//  test

//

//  Created by HandsomeC on 2017/12/11.

//  Copyright © 2017年 赵发生. All rights reserved.

//


#import "ZFSAlertView.h"


@implementation ZFSAlertView



/*

 回调为零默认为取消按钮

 */


+ (void)AlertViewWithTitle:(NSString *)title message:(NSString *)message cancelTitle:(NSString *)cancelTitle acitons:(NSArray *)actionsArr style:(ZFSAlertViewStyle)style inView:(UIViewController*)controller itemblock:(clickBlock)itemBlock{

UIAlertControllerStyle alertStyle;

if (!style) {

alertStyle = UIAlertControllerStyleAlert;

}else{

alertStyle = UIAlertControllerStyleActionSheet;

}

UIAlertController *alertController = [UIAlertControlleralertControllerWithTitle:title message:messagepreferredStyle:alertStyle];

[alertControlleraddAction:[UIAlertActionactionWithTitle:cancelTitle.length >0? cancelTitle:@"取消"style:UIAlertActionStyleCancelhandler:^(UIAlertAction *_Nonnull action) {

itemBlock(0);//取消返回0值

}]];

for (NSInteger i =0; i < actionsArr.count; i++) {

[alertControlleraddAction:[UIAlertActionactionWithTitle:actionsArr[i] style:UIAlertActionStyleDefaulthandler:^(UIAlertAction *_Nonnull action) {

itemBlock(i+1);

}]];

}


[controller presentViewController:alertController animated:YEScompletion:nil];

}




@end




阅读全文
0 0
原创粉丝点击