单军华
2018-03-29 89d748b77b478905732e60f0b4c5807c274b6565
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
//
//  JXTAlertView.h
//  JXTAlertManager
//
//  Created by JXT on 2016/12/20.
//  Copyright © 2016年 JXT. All rights reserved.
//
 
#import <UIKit/UIKit.h>
 
#define jxt_dispatch_main_async_safe(block)\
    if ([NSThread isMainThread]) {\
        block();\
    } else {\
        dispatch_async(dispatch_get_main_queue(), block);\
    }
/**
 回调主线程(显示alert必须在主线程执行)
 
 @param block 执行块
 */
static inline void jxt_getSafeMainQueue(_Nonnull dispatch_block_t block)
{
    jxt_dispatch_main_async_safe(block);
}
 
/**
 alert按钮执行回调
 
 @param buttonIndex 按钮index
 */
typedef void (^JXTAlertClickBlock)(NSInteger buttonIndex);
 
 
// MARK: 1.常规的alert
/**
 *  JXTAlertView: 两个按钮alert
 */
void jxt_showAlertTwoButton(NSString * _Nullable title,
                            NSString * _Nullable message,
                            NSString * _Nullable cancelButtonTitle,
                            JXTAlertClickBlock _Nullable cancelBlock,
                            NSString * _Nullable otherButtonTitle,
                            JXTAlertClickBlock _Nullable otherBlock);
/**
 *  JXTAlertView: 一个按钮alert
 */
void jxt_showAlertOneButton(NSString * _Nullable title,
                            NSString * _Nullable message,
                            NSString * _Nullable cancelButtonTitle,
                            JXTAlertClickBlock _Nullable cancelBlock);
/**
 *  JXTAlertView: 一个固定按钮alert
 */
void jxt_showAlertTitle(NSString * _Nullable title);
/**
 *  JXTAlertView: 一个固定按钮alert
 */
void jxt_showAlertMessage(NSString * _Nullable message);
/**
 *  JXTAlertView: 一个固定按钮alert
 */
void jxt_showAlertTitleMessage(NSString * _Nullable title,
                               NSString * _Nullable message);
 
 
// MARK: 2.无按钮toast
/**
 *  JXTAlertView: 无按钮toast,支持自定义关闭回调
 */
void jxt_showToastTitleMessageDismiss(NSString * _Nullable title,
                                      NSString * _Nullable message,
                                      NSTimeInterval duration,
                                      JXTAlertClickBlock _Nullable dismissCompletion);
/**
 *  JXTAlertView: 无按钮toast,支持自定义关闭回调
 */
void jxt_showToastTitleDismiss(NSString * _Nullable title,
                               NSTimeInterval duration,
                               JXTAlertClickBlock _Nullable dismissCompletion);
/**
 *  JXTAlertView: 无按钮toast,支持自定义关闭回调
 */
void jxt_showToastMessageDismiss(NSString * _Nullable message,
                                 NSTimeInterval duration,
                                 JXTAlertClickBlock _Nullable dismissCompletion);
/**
 *  JXTAlertView: 无按钮toast
 */
void jxt_showToastTitle(NSString * _Nullable title,
                        NSTimeInterval duration);
/**
 *  JXTAlertView: 无按钮toast
 */
void jxt_showToastMessage(NSString * _Nullable message,
                          NSTimeInterval duration);
 
 
// MARK: 3.文字HUD,代码执行关闭
/**
 *  JXTAlertView: 文字HUD,jxt_dismissHUD()执行关闭
 */
void jxt_showTextHUDTitleMessage(NSString * _Nullable title,
                                 NSString * _Nullable message);
/**
 *  JXTAlertView: 文字HUD,jxt_dismissHUD()执行关闭
 */
void jxt_showTextHUDTitle(NSString * _Nullable title);
/**
 *  JXTAlertView: 文字HUD,jxt_dismissHUD()执行关闭
 */
void jxt_showTextHUDMessage(NSString * _Nullable message);
 
 
// MARK: 4.loadHUD,代码执行关闭
/**
 *  JXTAlertView: loadHUD,jxt_dismissHUD()执行关闭
 */
void jxt_showLoadingHUDTitleMessage(NSString * _Nullable title,
                                    NSString * _Nullable message);
/**
 *  JXTAlertView: loadHUD,jxt_dismissHUD()执行关闭
 */
void jxt_showLoadingHUDTitle(NSString * _Nullable title);
/**
 *  JXTAlertView: loadHUD,jxt_dismissHUD()执行关闭
 */
void jxt_showLoadingHUDMessage(NSString * _Nullable message);
 
 
// MARK: 5.ProgressHUD,代码执行关闭
/**
 *  JXTAlertView: ProgressHUD,jxt_dismissHUD()执行关闭
 */
void jxt_showProgressHUDTitleMessage(NSString * _Nullable title,
                                     NSString * _Nullable message);
/**
 *  JXTAlertView: ProgressHUD,jxt_dismissHUD()执行关闭
 */
void jxt_showProgressHUDTitle(NSString * _Nullable title);
/**
 *  JXTAlertView: ProgressHUD,jxt_dismissHUD()执行关闭
 */
void jxt_showProgressHUDMessage(NSString * _Nullable message);
/**
 *  JXTAlertView: ProgressHUD,设置进度值
 */
void jxt_setHUDProgress(float progress);
 
 
// MARK: 6.HUD公用
/**
 *  JXTAlertView: 设置HUD成功状态
 */
void jxt_setHUDSuccessTitleMessage(NSString * _Nullable title,
                                   NSString * _Nullable message);
/**
 *  JXTAlertView: 设置HUD成功状态
 */
void jxt_setHUDSuccessTitle(NSString * _Nullable title);
/**
 *  JXTAlertView: 设置HUD成功状态
 */
void jxt_setHUDSuccessMessage(NSString * _Nullable message);
 
/**
 *  JXTAlertView: 设置HUD失败状态
 */
void jxt_setHUDFailTitleMessage(NSString * _Nullable title,
                                NSString * _Nullable message);
/**
 *  JXTAlertView: 设置HUD失败状态
 */
void jxt_setHUDFailTitle(NSString * _Nullable title);
/**
 *  JXTAlertView: 设置HUD失败状态
 */
void jxt_setHUDFailMessage(NSString * _Nullable message);
 
/**
 *  JXTAlertView: 关闭HUD
 */
void jxt_dismissHUD();
 
 
 
/**
 JXTAlertView 简介:
 
 开发调试使用简易alert/HUD工具
 
 部分提供C函数方便使用,所有show方法的C函数均默认回调主线程
 */
@interface JXTAlertView : UIAlertView
 
/**
 JXTAlertView: 最多支持两个按钮的alert
 
 @param title             title
 @param message           message
 @param cancelButtonTitle 取消按钮标题
 @param otherButtonTitle  其他按钮标题
 @param cancelBlock       取消按钮回调
 @param otherBlock        其他按钮回调
 */
+ (void)showAlertViewWithTitle:(nullable NSString *)title
                       message:(nullable NSString *)message
             cancelButtonTitle:(nullable NSString *)cancelButtonTitle
              otherButtonTitle:(nullable NSString *)otherButtonTitle
             cancelButtonBlock:(nullable JXTAlertClickBlock)cancelBlock
              otherButtonBlock:(nullable JXTAlertClickBlock)otherBlock;
 
 
/**
 JXTAlertView: 不定数量按钮alert
 
 @param title             title
 @param message           message
 @param cancelButtonTitle 取消按钮标题
 @param buttonIndexBlock  按钮回调
 @param otherButtonTitles 其他按钮标题列表
 */
+ (void)showAlertViewWithTitle:(nullable NSString *)title
                       message:(nullable NSString *)message
             cancelButtonTitle:(nullable NSString *)cancelButtonTitle
              buttonIndexBlock:(nullable JXTAlertClickBlock)buttonIndexBlock
             otherButtonTitles:(nullable NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION;
 
 
/**
 JXTAlertView: 不带按钮自动消失的toast
 
 @param title             title
 @param message           message
 @param duration          显示时间
 @param dismissCompletion 关闭后回调
 */
+ (void)showToastViewWithTitle:(nullable NSString *)title
                       message:(nullable NSString *)message
                      duration:(NSTimeInterval)duration
             dismissCompletion:(nullable JXTAlertClickBlock)dismissCompletion;
 
 
/**
 JXTAlertView: 文字HUD
 
 @param title title
 @param message message
 */
+ (void)showTextHUDWithTitle:(nullable NSString *)title
                     message:(nullable NSString *)message;
 
 
/**
 JXTAlertView: loadHUD
 
 @param title title
 @param message message 
 */
+ (void)showLoadingHUDWithTitle:(nullable NSString *)title
                        message:(nullable NSString *)message;
 
 
/**
 JXTAlertView: progressHUD
 
 @param title title
 @param message message
 */
+ (void)showProgressHUDWithTitle:(nullable NSString *)title
                         message:(nullable NSString *)message;
/**
 JXTAlertView: progressHUD,进度条进度值
 
 @param progress 进度值
 */
+ (void)setHUDProgress:(float)progress;
 
 
/**
 JXTAlertView: HUD公用方法,设置成功状态
 
 @param title   title
 @param message message
 */
+ (void)setHUDSuccessStateWithTitle:(nullable NSString *)title
                            message:(nullable NSString *)message;
/**
 JXTAlertView: HUD公用方法,设置失败状态
 
 @param title   title
 @param message message
 */
+ (void)setHUDFailStateWithTitle:(nullable NSString *)title
                         message:(nullable NSString *)message;
/**
 JXTAlertView: HUD公用方法,关闭HUD
 */
+ (void)dismissHUD;
 
@end