使用与iOS8 以后,只是把系统的UIAlertController进行了封装,省的每次用的时候要写很多的代码。封装后只需要一句代码即可 , deome 地址
:https://github.com/liguoliangiOS/LGLAlertView.git
上代码LGLAlertView.h:
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> typedef NS_ENUM(NSInteger, LGLAlertViewActionStyle) { LGLAlertViewActionStyleDefault = 0, LGLAlertViewActionStyleCancel, LGLAlertViewActionStyleDestructive }; /** alertView的回调block */ typedef void (^CallBackBlock)(NSInteger btnIndex); /** alertView的回调block */ typedef void (^TextFieldCallBackBlock)(NSString * text); @interface LGLAlertView : NSObject /** * 单个或者没有按钮 不执行任何操作 只是提示总用 * @param title 提示的标题 * @param message 提示信息 * @param btnTitle 单个按钮的标题名称 * */ + (void)showAlertViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message buttonTitle:(NSString *)btnTitle buttonStyle:(LGLAlertViewActionStyle)buttonStyle; /** * 有两个或者多个按钮 确定 取消 * @param title 提示的标题 * @param message 提示信息 * @param btnTitle 单个按钮的标题名称 * @param cancelButtonTitle 取消按钮 * @param destructiveBtn destructiveBtn按钮 * @param otherButtonTitles 确定按钮 */ + (void)showAlertViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message CallBackBlock:(CallBackBlock)textBlock cancelButtonTitle:(NSString *)cancelBtnTitle destructiveButtonTitle:(NSString *)destructiveBtnTitle otherButtonTitles:(NSString *)otherBtnTitles,...NS_REQUIRES_NIL_TERMINATION; /** * 有输入框 确定 取消 (注: 这里只做了有一个输入框) * @param title 提示的标题 * @param message 提示信息 * @param btnTitle 单个按钮的标题名称 * @param cancelButtonTitle 取消按钮 * @param destructiveBtn destructiveBtn按钮 * @param otherButtonTitles 确定按钮 */ + (void)showAlertTextFieldViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message TextFeildCallBackBlock:(TextFieldCallBackBlock)block cancelButtonTitle:(NSString *)cancelBtnTitle otherButtonTitles:(NSString *)otherBtnTitle; /** * 单个或者没有按钮ActionSheet 仅仅只是提示作用 按钮没有响应事件 * @param title 提示的标题 * @param message 提示信息 * @param btnTitle 单个按钮的标题名称 * */ + (void)showAlertActionSheetViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message buttonTitle:(NSString *)btnTitle buttonStyle:(LGLAlertViewActionStyle)buttonStyle; /** * 没有按钮ActionSheet 按钮有响应事件 * @param title 提示的标题 * @param message 提示信息 * @param btnTitle 单个按钮的标题名称 * */ + (void)showAlertActionSheetWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message callbackBlock:(CallBackBlock)block destructiveButtonTitle:(NSString *)destructiveBtnTitle cancelButtonTitle:(NSString *)cancelBtnTitle otherButtonTitles:(NSString *)otherBtnTitles, ...NS_REQUIRES_NIL_TERMINATION; @end
LGLAlertView.m:文件
#import "LGLAlertView.h" #define LGLAlertShowTime 1.0 @implementation LGLAlertView // ======================================================================== ----- AlertView start----- ================================================================================== // 单个或没有按钮 + (void)showAlertViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message buttonTitle:(NSString *)btnTitle buttonStyle:(LGLAlertViewActionStyle)buttonStyle { UIAlertController * alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; if (btnTitle.length) { UIAlertActionStyle actionStyle = (buttonStyle == LGLAlertViewActionStyleDefault) ? UIAlertActionStyleDefault : ((buttonStyle == LGLAlertViewActionStyleCancel) ? UIAlertActionStyleCancel : UIAlertActionStyleDestructive); UIAlertAction * alertAction = alertAction = [UIAlertAction actionWithTitle:btnTitle style:actionStyle handler:^(UIAlertAction * _Nonnull action) { [self performSelector:@selector(dismissAlertController:) withObject:alertController afterDelay:LGLAlertShowTime]; }];; [alertController addAction:alertAction]; [viewController presentViewController:alertController animated:YES completion:nil]; } else { [viewController presentViewController:alertController animated:YES completion:nil]; [self performSelector:@selector(dismissAlertController:) withObject:alertController afterDelay:LGLAlertShowTime]; } } // 单个或多个按钮 + (void)showAlertViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message CallBackBlock:(CallBackBlock)block cancelButtonTitle:(NSString *)cancelBtnTitle destructiveButtonTitle:(NSString *)destructiveBtnTitle otherButtonTitles:(NSString *)otherBtnTitles,... { UIAlertController * alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; //添加按钮 if (cancelBtnTitle.length) { UIAlertAction * cancelAction = [UIAlertAction actionWithTitle:cancelBtnTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { block(0); }]; [alertController addAction:cancelAction]; } if (destructiveBtnTitle.length) { UIAlertAction * destructiveAction = [UIAlertAction actionWithTitle:destructiveBtnTitle style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { block(1); }]; [alertController addAction:destructiveAction]; } if (otherBtnTitles.length) { UIAlertAction *otherActions = [UIAlertAction actionWithTitle:otherBtnTitles style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { (!cancelBtnTitle.length && !destructiveBtnTitle.length) ? block(0) : (((cancelBtnTitle.length && !destructiveBtnTitle.length) || (!cancelBtnTitle.length && destructiveBtnTitle.length)) ? block(1) : block(2)); }]; [alertController addAction:otherActions]; va_list args; va_start(args, otherBtnTitles); if (otherBtnTitles.length) { NSString * otherString; int index = 2; (!cancelBtnTitle.length && !destructiveBtnTitle.length) ? (index = 0) : ((cancelBtnTitle.length && !destructiveBtnTitle.length) || (!cancelBtnTitle.length && destructiveBtnTitle.length) ? (index = 1) : (index = 2)); while ((otherString = va_arg(args, NSString*))) { index ++ ; UIAlertAction * otherActions = [UIAlertAction actionWithTitle:otherString style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { block(index); }]; [alertController addAction:otherActions]; } } va_end(args); } [viewController presentViewController:alertController animated:YES completion:nil]; //如果没有按钮,自动延迟消失 if (!cancelBtnTitle.length && !destructiveBtnTitle.length && !otherBtnTitles) { //此时self指本类 [self performSelector:@selector(dismissAlertController:) withObject:alertController afterDelay:LGLAlertShowTime]; } } // 有输入框 + (void)showAlertTextFieldViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message TextFeildCallBackBlock:(TextFieldCallBackBlock)textBlock cancelButtonTitle:(NSString *)cancelBtnTitle otherButtonTitles:(NSString *)otherBtnTitle { UIAlertController * alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { }]; if (cancelBtnTitle.length) { UIAlertAction * cancelAction = [UIAlertAction actionWithTitle:cancelBtnTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { [self dismissAlertController:alertController]; }]; [alertController addAction:cancelAction]; } if (otherBtnTitle.length) { UIAlertAction * otherAction = [UIAlertAction actionWithTitle:otherBtnTitle style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { textBlock([alertController.textFields firstObject].text); }]; [alertController addAction:otherAction]; } [viewController presentViewController:alertController animated:YES completion:nil]; //如果没有按钮,自动延迟消失 if (!cancelBtnTitle.length && !otherBtnTitle.length) { //此时self指本类 [self performSelector:@selector(dismissAlertController:) withObject:alertController afterDelay:LGLAlertShowTime]; } } // ======================================================================== ----- AlertView end----- ================================================================================== #pragma mark ==== 点击事件 ====== + (void)dismissAlertController:(UIAlertController *)alert { [alert dismissViewControllerAnimated:YES completion:nil]; } // ======================================================================== -- ActionSheet Start -- ==================================================================================== + (void)showAlertActionSheetViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message buttonTitle:(NSString *)btnTitle buttonStyle:(LGLAlertViewActionStyle)buttonStyle { UIAlertController * actionController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleActionSheet]; if (btnTitle.length) { UIAlertActionStyle actionStyle = (buttonStyle == LGLAlertViewActionStyleDefault) ? UIAlertActionStyleDefault : ((buttonStyle == LGLAlertViewActionStyleCancel) ? UIAlertActionStyleCancel : UIAlertActionStyleDestructive); UIAlertAction * alertAction = alertAction = [UIAlertAction actionWithTitle:btnTitle style:actionStyle handler:^(UIAlertAction * _Nonnull action) { [self performSelector:@selector(dismissAlertController:) withObject:actionController afterDelay:LGLAlertShowTime]; }];; [actionController addAction:alertAction]; [viewController presentViewController:actionController animated:YES completion:nil]; } else { [viewController presentViewController:actionController animated:YES completion:nil]; //如果没有按钮,自动延迟消失 [self performSelector:@selector(dismissAlertController:) withObject:actionController afterDelay:LGLAlertShowTime]; } } + (void)showAlertActionSheetWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message callbackBlock:(CallBackBlock)block destructiveButtonTitle:(NSString *)destructiveBtnTitle cancelButtonTitle:(NSString *)cancelBtnTitle otherButtonTitles:(NSString *)otherBtnTitles, ... { UIAlertController * actionController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleActionSheet]; //添加按钮 if (destructiveBtnTitle.length) { UIAlertAction *destructiveAction = [UIAlertAction actionWithTitle:destructiveBtnTitle style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { block(0); }]; [actionController addAction:destructiveAction]; } if (cancelBtnTitle.length) { UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelBtnTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { destructiveBtnTitle.length ? block(1) : block(0); }]; [actionController addAction:cancelAction]; } if (otherBtnTitles.length) { UIAlertAction *otherActions = [UIAlertAction actionWithTitle:otherBtnTitles style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { (!cancelBtnTitle.length && !destructiveBtnTitle.length) ? block(0) : (((destructiveBtnTitle.length && !cancelBtnTitle.length) || (!destructiveBtnTitle.length && cancelBtnTitle.length)) ? block(1) : block(2)); }]; [actionController addAction:otherActions]; va_list args; va_start(args, otherBtnTitles); if (otherBtnTitles.length) { NSString * otherString; int index = 2; (!cancelBtnTitle.length && !destructiveBtnTitle.length) ? (index = 0) : ((cancelBtnTitle.length && !destructiveBtnTitle.length) || (!cancelBtnTitle.length && destructiveBtnTitle.length) ? (index = 1) : (index = 2)); while ((otherString = va_arg(args, NSString*))) { index ++ ; UIAlertAction * otherActions = [UIAlertAction actionWithTitle:otherString style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { block(index); }]; [actionController addAction:otherActions]; } } va_end(args); } [viewController presentViewController:actionController animated:YES completion:nil]; //如果没有按钮,自动延迟消失 if (!cancelBtnTitle.length && !destructiveBtnTitle.length && !otherBtnTitles.length) { //此时self指本类 [self performSelector:@selector(dismissAlertController:) withObject:actionController afterDelay:LGLAlertShowTime]; } } @end
以上所述是小编给大家介绍的iOS中 LGLAlertView 提示框的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍iOS自定义alertView提示框实例分享,包括了iOS自定义alertView提示框实例分享的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享iOS自定义alertView提示框,先上图,弹框的背景色,按钮背景色,提示的消息的字体颜色都可以改变 利用单例实现丰富的自定义接口 .m文件中初始化控件以及对alertView的控件的属性进行懒加载,确定初始的颜色. 在需要调用
本文向大家介绍vue的全局提示框组件实例代码,包括了vue的全局提示框组件实例代码的使用技巧和注意事项,需要的朋友参考一下 这篇文章给大家介绍一个vue全局提示框组件,具体代码如下所示: toast.js 如何使用? 在main.js中 在component中 总结 以上所述是小编给大家介绍的vue的全局提示框组件实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大
本文向大家介绍bootstrap提示标签、提示框实现代码,包括了bootstrap提示标签、提示框实现代码的使用技巧和注意事项,需要的朋友参考一下 首先聊一聊提示标签: 效果: 下面讲一讲提示框: 效果: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍Android AutoCompleteTextView自动提示文本框实例代码,包括了Android AutoCompleteTextView自动提示文本框实例代码的使用技巧和注意事项,需要的朋友参考一下 自动提示文本框(AutoCompleteTextView)可以加强用户体验,缩短用户的输入时间(百度的搜索框就是这个效果)。 先给大家展示下效果图,如果大家感觉还不错,请参考实现
本文向大家介绍iOS实现圆角箭头矩形的提示框,包括了iOS实现圆角箭头矩形的提示框的使用技巧和注意事项,需要的朋友参考一下 先来看看我们见过的一些圆角箭头矩形的提示框效果图 一、了解CGContextRef 首先需要对 CGContextRef 了解, 作者有机会再进行下详细讲解, 这篇中简单介绍下, 方便后文阅读理解. 先了解 CGContextRef 坐标系 坐标系 举例说明 : 对于 商城类
本文向大家介绍Android实现类似iOS风格的对话框实例代码,包括了Android实现类似iOS风格的对话框实例代码的使用技巧和注意事项,需要的朋友参考一下 分享一个简单的常用的对话框类,按照国际惯例,先上图 布局简单,先上布局。一个标题,一个内容,两个按钮 接着就是自定义类! 首先,新建类继承Dialog 接着是构造函数,在构造函数中定义样式 其中,在style中定义对话框属性 紧接着,提供四