// // MTAlertView.h // Meet // // Created by ko1o on 2018/9/17. // Copyright © 2018年 ko1o. All rights reserved. // #import #import "zhPopupController.h" #ifndef MTAlertFixSize #define MTAlertFixSize FIX_SIZE #endif #define kMTAlertContentSizeDefaultWidth MTAlertFixSize(280) #define MTNO_DISMISS_TAG 123 #define MTWILL_DISMISS_TAG 20220814 @class MTAlertButton, MTAlertView; typedef void(^MTAlertButtonHandler)(MTAlertButton *button); typedef NS_ENUM(NSUInteger, MTAlertButtonType) { MTAlertButtonTypeDefault, // 白色背景 黑色字体 MTAlertButtonTypeDefaultTheme, // 白色背景 主题色字体 MTAlertButtonTypeDefaultDestructive, // 白色背景 警告色字体 MTAlertButtonTypeNormal, // 主题色背景 白色字体 MTAlertButtonTypeCancel, // 白色 黑色字体 灰色边框 MTAlertButtonTypeDestructive, // 警告色背景 白色字体 }; @interface MTAlertButton : UIButton + (instancetype)buttonWithType:(UIButtonType)buttonType NS_UNAVAILABLE; + (instancetype)buttonWithType:(MTAlertButtonType)type title:(NSString *)title handler:(MTAlertButtonHandler)handler; @property (nonatomic, assign) UIColor *lineColor; // 线条颜色 @property (nonatomic, assign) CGFloat lineWidth; // 线宽 @property (nonatomic, assign) UIEdgeInsets edgeInsets; //边缘留白 top -> 间距 / bottom -> 最底部留白(根据不同情况调整不同间距) @end static NSString *const kMTAlertViewCancelTitle = @"取消"; static NSString *const kMTAlertViewOtherTitle = @"确定"; static NSString *const kMTAlertViewDeleteTitle = @"删除"; @interface MTAlertViewConfig : NSObject // 针对引导弹窗,底部“X按钮” @property (nonatomic, assign) BOOL shouldBottomCancelButton; @property (nonatomic, copy) void (^bottomCancelButtonHandler)(MTAlertView *alertView); // alertView一直存在 @property (nonatomic, assign) BOOL notDismissForever; /// 弹窗图片 (UIImage or NSString) /// icon有值 则使用icon布局: icon + title + message + cancel + other @property (nonatomic, strong) id icon; /// 弹窗标题(默认布局:title + message + cancel + other) @property (nonatomic, copy) NSString *title; /// 弹窗内容 @property (nonatomic, copy) NSString *message; /// 取消操作 标题&回调 @property (nonatomic, copy) NSString *cancelTitle; @property (nonatomic, copy) MTAlertButtonHandler cancelHandler; /// 其他操作 标题&回调 /// set otherDestructiveTitle equal to otherTitle = otherTitle && otherButtonType = MTAlertButtonTypeDestructive @property (nonatomic, copy) NSString *otherDestructiveTitle; /// set otherDestructiveTitle equal to otherTitle = otherTitle && otherButtonType = MTAlertButtonTypeDefaultDestructive @property (nonatomic, copy) NSString *otherDefaultDestructiveTitle; @property (nonatomic, copy) NSString *otherTitle; @property (nonatomic, assign) MTAlertButtonType otherButtonType; @property (nonatomic, copy) MTAlertButtonHandler otherHandler; /// custom view 可传入自定义view /// customView有值 则使用cutsom布局: custom view + cancel + other @property (nonatomic, strong) UIView *customView; @property (nonatomic, assign) BOOL onlyCustomView; /// alert 使用popupController 完成show&dismiss @property (nonatomic, strong) zhPopupController *popupController; @end /// 初始化配置使用该block typedef void(^MTAlertViewSetupBlock)(MTAlertViewConfig *config); /// 完成初始化且创建完所以组件后调用该block typedef void(^MTAlertViewDidLayoutSubviewsBlock)(UILabel *titleLabel, UILabel *messageLabel, UIImageView *iconImageView, UIView *alertButtonContentView, UIButton *bottomCancelButton, UIView *customView, UIView *contentView, MTAlertView *alertView); @interface MTAlertView : UIView @property (nonatomic, strong, readonly) UILabel *messageLabel; /// 根据配置创建AlertView + (instancetype)alertViewWithSetupBlock:(MTAlertViewSetupBlock)setupBlock; - (instancetype)initWithSetupBlock:(MTAlertViewSetupBlock)setupBlock; + (MTAlertView *)showWithSetupBlcok:(MTAlertViewSetupBlock)setupBlock; @property (nonatomic, copy) MTAlertViewDidLayoutSubviewsBlock didLayoutSubviewBlock; @property (nonatomic, strong) void(^didDismiss)(MTAlertView *alertView); @property (nonatomic, strong, readonly) MTAlertViewConfig *config; // - (NSTimeInterval) - (MTAlertView *)show; - (MTAlertView *)showInView:(UIView *)view; - (MTAlertView *)dismiss; - (void)addAction:(NSString *)actionTitle type:(MTAlertButtonType)type actionHandler:(MTAlertButtonHandler)actionHandler; + (BOOL)hasAlertViewShowing; @property (nonatomic, strong) UITextField *textField; /// 显示自定义AlertView + (MTAlertView *)showAlertWithCustomView:(UIView *)actionView; /// 显示自定义actonView + (zhPopupController *)showActionSheetWithCustomView:(UIView *)actionView; @end