WBHUDManager

更新日志

2018-08-01:更新API,支持配置更多自定义设置,录制GIF。

2018-09-09:支持pod安装

前言

在我们平时做项目的时候,为了提高交互体验,难免会用到一些提示语。除了UI上有特殊的要求需要自定义提示UI,一般会选择GitHub上一些知名的提示框架库,如:

之前做项目都是用的SVProgressHUD,这个三方提示库使用非常接单,基于这个库,也很好做自定义提示封装。后来做项目改成了MBProgressHUD,相对于SVProgressHUD,MBProgressHUD使用相对来说要麻烦一点,因此,我对MBProgressHUD一些常用提示进行了封装,最开始封装的工具类存在着一些缺点,比如说在网络请求的时候,如果网络不好,拿不到回调,MBProgressHUD就会一直显示,用户无法交互,因此对这个工具类进行了改进。

MBProgressHUD(v1.1.0)

我主要写了一个分类,有菊花、文字、文字+图片提示,并提供了显示完成对调,方便显示完成后进行相应的操作或界面跳转,提供的调用方法如下:

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
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
// MARK:Loading
/**
只显示菊花,不会自动消失 (白字+黑底)

@return MBProgressHUD实例对象
*/
+ (MBProgressHUD *)wb_showActivity;

/**
只显示菊花,不会自动消失 (白字+黑底+自定义视图)

@param view 要显示的视图
@return MBProgressHUD实例对象
*/
+ (MBProgressHUD *)wb_showActivity:(UIView *)view;

/**
菊花+文字 (白字+黑底)

@param message 加载文字
@return MBProgressHUD实例对象
*/
+ (MBProgressHUD *)wb_showActivityMessage:(NSString *)message;

/**
菊花+文字 (白字+黑底)

@param message 加载文字
@param view 要显示的视图
@return MBProgressHUD实例对象
*/
+ (MBProgressHUD *)wb_showActivityMessage:(NSString *)message
toView:(UIView *)view;

/**
菊花+文字 (自定义文字+内容颜色+蒙版颜色+容器颜色)

@param message 加载文字
@param view 要显示的视图
@param contentColor 内容颜色
@param maskColor 蒙版颜色
@param bezelColor 容器颜色
@return MBProgressHUD实例对象
*/
+ (MBProgressHUD *)wb_showActivityMessage:(NSString *)message
toView:(UIView *)view
contentColor:(UIColor *)contentColor
maskColor:(UIColor *)maskColor
bezelColor:(UIColor *)bezelColor;

/**
菊花+文字 (自定义文字+文字颜色+蒙版颜色+容器颜色)

@param message 加载文字
@param view 要显示的视图
@param titleColor 文字颜色
@param maskColor 蒙版颜色
@param bezelColor 容器颜色
@return MBProgressHUD实例对象
*/
+ (MBProgressHUD *)wb_showActivityMessage:(NSString *)message
toView:(UIView *)view
titleColor:(UIColor *)titleColor
maskColor:(UIColor *)maskColor
bezelColor:(UIColor *)bezelColor;

// MARK:Text
/**
提示文字 (自定义文+位置中间 + 显示在window)

@param message 文字
*/
+ (void)wb_showMessage:(NSString *)message;

/**
提示文字 (标题 + 详情文字)

@param message 文字
@param detailMessage 详情文字
*/
+ (void)wb_showMessage:(NSString *)message
detailMessage:(NSString *)detailMessage;

/**
提示文字 (标题 + 详情文字 + 自定义位置 + 视图)

@param message 文字
@param detailMessage 详情文字
@param position 位置
*/
+ (void)wb_showMessage:(NSString *)message
detailMessage:(NSString *)detailMessage
toView:(UIView *)view
position:(WBHUDPositionStyle)position;

/**
提示文字(自定义文+位置中间+显示在window+完成回调)

@param message 文字
@param completion 完成回调
*/
+ (void)wb_showMessage:(NSString *)message
completion:(MBProgressHUDCompletionBlock)completion;

/**
提示文字(自定文字+位置中间+自定义显示视图+完成回调)

@param message 文字
@param view 要显示的视图
@param completion 完成回调
*/
+ (void)wb_showMessage:(NSString *)message
toView:(UIView *)view
completion:(MBProgressHUDCompletionBlock)completion;

/**
提示文字 (自定义文字+自定义位置+自定义显示视图)

@param message 文字
@param view 要显示的视图
@param position 位置
@param completion 完成回调
*/
+ (void)wb_showMessage:(NSString *)message
toView:(UIView *)view
position:(WBHUDPositionStyle)position
completion:(MBProgressHUDCompletionBlock)completion;

/**
提示文字 (自定义文字+详情文字+自定义位置+内容样式)

@param message 文字
@param detailTitle 详情文字
@param view 要显示的视图
@param position 显示位置
@param contentStyle 内容样式
@param completion 完成回调
*/
+ (void)wb_showMessage:(NSString *)message
detailTitle:(NSString *)detailTitle
toView:(UIView *)view
position:(WBHUDPositionStyle)position
contentStyle:(WBHUDContentStyle)contentStyle
completion:(MBProgressHUDCompletionBlock)completion;

// MARK:Image

/**
自定义成功提示 (显示在window)

@param success 提示文字
*/
+ (void)wb_showSuccess:(NSString *)success;

/**
自定义成功提示 (显示在window + 完成回调)

@param success 提示文字
@param completion 完成回调
*/
+ (void)wb_showSuccess:(NSString *)success
completion:(MBProgressHUDCompletionBlock)completion;

/**
自定义成功提示 (显示在window + 完成回调 + 自定义显示视图)

@param success 提示文字
@param view 显示视图
@param completion 完成回调
*/
+ (void)wb_showSuccess:(NSString *)success
toView:(UIView *)view
completion:(MBProgressHUDCompletionBlock)completion;

/**
错误提示 (显示在window)

@param error 提示文字
*/
+ (void)wb_showError:(NSString *)error;

/**
错误提示 (显示在window + 完成回调)

@param error 错误提示
@param completion 完成回调
*/
+ (void)wb_showError:(NSString *)error
completion:(MBProgressHUDCompletionBlock)completion;

/**
错误提示 (显示在window + 完成回调 + 自定义显示视图)

@param error 错误提示
@param view 示视图
@param completion 完成回调
*/
+ (void)wb_showError:(NSString *)error
toView:(UIView *)view
completion:(MBProgressHUDCompletionBlock)completion;

/**
信息提示 (window)

@param info 提示文字
*/
+ (void)wb_showInfo:(NSString *)info;

/**
信息提示 (window + 完成回调)

@param info 提示文字
@param completion 完成回调
*/
+ (void)wb_showInfo:(NSString *)info
completion:(MBProgressHUDCompletionBlock)completion;

/**
信息提示 (window + 完成回调 + 自定义显示视图)

@param info 提示文字
@param view 自定义显示视图
@param completion 完成回调
*/
+ (void)wb_showInfo:(NSString *)info
toView:(UIView *)view
completion:(MBProgressHUDCompletionBlock)completion;

/**
警告提示 (window)

@param warning 提示文字
*/
+ (void)wb_showWarning:(NSString *)warning;

/**
警告提示 (window + 完成回调)

@param warning 警告
@param completion 完成回调
*/
+ (void)wb_showWarning:(NSString *)warning
completion:(MBProgressHUDCompletionBlock)completion;

/**
警告提示 (window + 完成回调 + 自定义视图)

@param warning 警告
@param view 自定义视图
@param completion 完成回调
*/
+ (void)wb_showWarning:(NSString *)warning
toView:(UIView *)view
completion:(MBProgressHUDCompletionBlock)completion;

/**
自定义图片 + 文字提示

@param text 文字
@param icon 图片名
@param view 要显示的视图
@param completion 完成回调
*/
+ (void)wb_show:(NSString *)text
icon:(NSString *)icon
view:(UIView *)view
completion:(MBProgressHUDCompletionBlock)completion;

// MARK:Switch Model
/**
Model切换

@param view 要显示的视图
@param title 要显示的文字
@param configBlock 配置hud
@return MBProgressHUD实例对象
*/
+ (MBProgressHUD *)wb_showModelSwitch:(UIView *)view
title:(NSString *)title
configBlock:(WBHUDConfigBlock)configBlock;

// MARK:Progress
/**
文字 + 进度条

@param view 要显示的视图
@param progressStyle 进度样式
@param title 提示文字
@param configBlock 进度配置block
@return MBProgressHUD实例对象
*/
+ (MBProgressHUD *)wb_showDownloadToView:(UIView *)view
progressStyle:(WBHUDProgressStyle)progressStyle
title:(NSString *)title
configBlock:(WBHUDConfigBlock)configBlock;

/**
文字 + 进度条 + 取消按钮

@param view 要显示的视图
@param progressStyle 进度样式
@param title 提示文字
@param cancelTitle 取消按钮标题
@param configBlock 进度配置block
@param cancelBlock 取消按钮点击回调
@return MBProgressHUD实例对象
*/
+ (MBProgressHUD *)wb_showDownloadToView:(UIView *)view
progressStyle:(WBHUDProgressStyle)progressStyle
title:(NSString *)title
cancelTitle:(NSString *)cancelTitle
configBlock:(WBHUDConfigBlock)configBlock
cancelBlock:(WBHUDCancelBlock)cancelBlock;

// MARK:Hide
+ (void)wb_hideHUD;
+ (void)wb_hideHUDForView:(UIView *)view;

举一个.m显示菊花方法的例子吧,MBProgressHUD最新版本对比老版本API还是有些变化的:

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
/** < 创建HUD > */
+ (MBProgressHUD *)wb_createHUD:(UIView *)view {
if (view == nil) view = (UIView *)[UIApplication sharedApplication].delegate.window;
return [MBProgressHUD showHUDAddedTo:view
animated:YES];
}

/** < 设置HUD > */
+ (MBProgressHUD *)wb_configHUDWithView:(UIView *)view
title:(NSString *)title
autoDismiss:(BOOL)autoDismiss
completion:(MBProgressHUDCompletionBlock)completion {
MBProgressHUD *hud = [self wb_createHUD:view];
/** < 自动换行 > */
hud.label.numberOfLines = 0;
/** < 提示文字 > */
hud.title(title);
/** < 隐藏移除 > */
hud.removeFromSuperViewOnHide = YES;
/** <默认内容样式:黑底白字 > */
hud.hudContentStyle(WBHUDContentBlackStyle);
/** < 自动隐藏 > */
if (autoDismiss) {
[hud hideAnimated:YES
afterDelay:KHideAfterDelayTime];
}
hud.completionBlock = completion;
return hud;
}

感兴趣的朋友,可以下载Demo查看具体方法实现,请戳:WBHUDManager

结语

选择哪一款提示框架,都要看自己喜好了,因为我代码水平有限,有些地方可能考虑的不够完善,只能说是抛砖引玉吧,大神们可能有更好的封装。要想基于这些框架自定义出自己需要风格的UI,还是要对框架提供的方法属性有一定的了解。

-------------本文结束感谢您的阅读-------------
分享到:
0%