//
|
// JXTAlertController.h
|
// JXTAlertManager
|
//
|
// Created by JXT on 2016/12/22.
|
// Copyright © 2016年 JXT. All rights reserved.
|
//
|
|
#import <UIKit/UIKit.h>
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
#pragma mark - I.JXTAlertController构造
|
|
@class JXTAlertController;
|
/**
|
JXTAlertController: alertAction配置链
|
|
@param title 标题
|
@return JXTAlertController对象
|
*/
|
typedef JXTAlertController * _Nonnull (^JXTAlertActionTitle)(NSString *title);
|
|
/**
|
JXTAlertController: alert按钮执行回调
|
|
@param buttonIndex 按钮index(根据添加action的顺序)
|
@param action UIAlertAction对象
|
@param alertSelf 本类对象
|
*/
|
typedef void (^JXTAlertActionBlock)(NSInteger buttonIndex, UIAlertAction *action, JXTAlertController *alertSelf);
|
|
|
/**
|
JXTAlertController 简介:
|
|
1.针对系统UIAlertController封装,支持iOS8及以上
|
|
2.关于iOS9之后的`preferredAction`属性用法:
|
`alertController.preferredAction = alertController.actions[0];`
|
效果为将已存在的某个action字体加粗,原cancel样式的加粗字体成为deafult样式,cancel样式的action仍然排列在最下
|
总体意义不大,且仅限于`UIAlertControllerStyleAlert`,actionSheet无效,功能略微鸡肋,不再单独封装
|
|
3.关于`addTextFieldWithConfigurationHandler:`方法:
|
该方法同样仅限于`UIAlertControllerStyleAlert`使用,使用场景较为局限,推荐直接调用,不再针对封装
|
|
4.关于自定义按钮字体或者颜色,可以利用kvc间接访问这些私有属性,但是不推荐
|
`[alertAction setValue:[UIColor grayColor] forKey:@"titleTextColor"]`
|
*/
|
NS_CLASS_AVAILABLE_IOS(8_0) @interface JXTAlertController : UIAlertController
|
|
|
/**
|
JXTAlertController: 禁用alert弹出动画,默认执行系统的默认弹出动画
|
*/
|
- (void)alertAnimateDisabled;
|
|
/**
|
JXTAlertController: alert弹出后,可配置的回调
|
*/
|
@property (nullable, nonatomic, copy) void (^alertDidShown)();
|
|
/**
|
JXTAlertController: alert关闭后,可配置的回调
|
*/
|
@property (nullable, nonatomic, copy) void (^alertDidDismiss)();
|
|
/**
|
JXTAlertController: 设置toast模式展示时间:如果alert未添加任何按钮,将会以toast样式展示,这里设置展示时间,默认1s
|
*/
|
@property (nonatomic, assign) NSTimeInterval toastStyleDuration; //deafult jxt_alertShowDurationDefault = 1s
|
|
|
/**
|
JXTAlertController: 链式构造alert视图按钮,添加一个alertAction按钮,默认样式,参数为标题
|
|
@return JXTAlertController对象
|
*/
|
- (JXTAlertActionTitle)addActionDefaultTitle;
|
|
/**
|
JXTAlertController: 链式构造alert视图按钮,添加一个alertAction按钮,取消样式,参数为标题(warning:一个alert该样式只能添加一次!!!)
|
|
@return JXTAlertController对象
|
*/
|
- (JXTAlertActionTitle)addActionCancelTitle;
|
|
/**
|
JXTAlertController: 链式构造alert视图按钮,添加一个alertAction按钮,警告样式,参数为标题
|
|
@return JXTAlertController对象
|
*/
|
- (JXTAlertActionTitle)addActionDestructiveTitle;
|
|
@end
|
|
|
#pragma mark - II.UIViewController扩展使用JXTAlertController
|
|
/**
|
JXTAlertController: alert构造块
|
|
@param alertMaker JXTAlertController配置对象
|
*/
|
typedef void(^JXTAlertAppearanceProcess)(JXTAlertController *alertMaker);
|
|
@interface UIViewController (JXTAlertController)
|
|
/**
|
JXTAlertController: show-alert(iOS8)
|
|
@param title title
|
@param message message
|
@param appearanceProcess alert配置过程
|
@param actionBlock alert点击响应回调
|
*/
|
- (void)jxt_showAlertWithTitle:(nullable NSString *)title
|
message:(nullable NSString *)message
|
appearanceProcess:(JXTAlertAppearanceProcess)appearanceProcess
|
actionsBlock:(nullable JXTAlertActionBlock)actionBlock NS_AVAILABLE_IOS(8_0);
|
|
/**
|
JXTAlertController: show-actionSheet(iOS8)
|
|
@param title title
|
@param message message
|
@param appearanceProcess actionSheet配置过程
|
@param actionBlock actionSheet点击响应回调
|
*/
|
- (void)jxt_showActionSheetWithTitle:(nullable NSString *)title
|
message:(nullable NSString *)message
|
appearanceProcess:(JXTAlertAppearanceProcess)appearanceProcess
|
actionsBlock:(nullable JXTAlertActionBlock)actionBlock NS_AVAILABLE_IOS(8_0);
|
|
@end
|
|
NS_ASSUME_NONNULL_END
|