forked from Tencent/QMUI_iOS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQMUITips.m
294 lines (227 loc) · 11.2 KB
/
QMUITips.m
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
//
// QMUITips.m
// qmui
//
// Created by zhoonchen on 15/12/25.
// Copyright © 2015年 QMUI Team. All rights reserved.
//
#import "QMUITips.h"
#import "QMUICore.h"
#import "QMUIToastContentView.h"
#import "QMUIToastBackgroundView.h"
#import "NSString+QMUI.h"
const NSInteger QMUITipsAutomaticallyHideToastSeconds = -1;
@interface QMUITips ()
@property(nonatomic, strong) UIView *contentCustomView;
@end
@implementation QMUITips
- (void)showLoading {
[self showLoading:nil hideAfterDelay:0];
}
- (void)showLoadingHideAfterDelay:(NSTimeInterval)delay {
[self showLoading:nil hideAfterDelay:delay];
}
- (void)showLoading:(NSString *)text {
[self showLoading:text hideAfterDelay:0];
}
- (void)showLoading:(NSString *)text hideAfterDelay:(NSTimeInterval)delay {
[self showLoading:text detailText:nil hideAfterDelay:delay];
}
- (void)showLoading:(NSString *)text detailText:(NSString *)detailText {
[self showLoading:text detailText:detailText hideAfterDelay:0];
}
- (void)showLoading:(NSString *)text detailText:(NSString *)detailText hideAfterDelay:(NSTimeInterval)delay {
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[indicator startAnimating];
self.contentCustomView = indicator;
[self showTipWithText:text detailText:detailText hideAfterDelay:delay];
}
- (void)showWithText:(NSString *)text {
[self showWithText:text detailText:nil hideAfterDelay:0];
}
- (void)showWithText:(NSString *)text hideAfterDelay:(NSTimeInterval)delay {
[self showWithText:text detailText:nil hideAfterDelay:delay];
}
- (void)showWithText:(NSString *)text detailText:(NSString *)detailText {
[self showWithText:text detailText:detailText hideAfterDelay:0];
}
- (void)showWithText:(NSString *)text detailText:(NSString *)detailText hideAfterDelay:(NSTimeInterval)delay {
self.contentCustomView = nil;
[self showTipWithText:text detailText:detailText hideAfterDelay:delay];
}
- (void)showSucceed:(NSString *)text {
[self showSucceed:text detailText:nil hideAfterDelay:0];
}
- (void)showSucceed:(NSString *)text hideAfterDelay:(NSTimeInterval)delay {
[self showSucceed:text detailText:nil hideAfterDelay:delay];
}
- (void)showSucceed:(NSString *)text detailText:(NSString *)detailText {
[self showSucceed:text detailText:detailText hideAfterDelay:0];
}
- (void)showSucceed:(NSString *)text detailText:(NSString *)detailText hideAfterDelay:(NSTimeInterval)delay {
self.contentCustomView = [[UIImageView alloc] initWithImage:[QMUIHelper imageWithName:@"QMUI_tips_done"]];
[self showTipWithText:text detailText:detailText hideAfterDelay:delay];
}
- (void)showError:(NSString *)text {
[self showError:text detailText:nil hideAfterDelay:0];
}
- (void)showError:(NSString *)text hideAfterDelay:(NSTimeInterval)delay {
[self showError:text detailText:nil hideAfterDelay:delay];
}
- (void)showError:(NSString *)text detailText:(NSString *)detailText {
[self showError:text detailText:detailText hideAfterDelay:0];
}
- (void)showError:(NSString *)text detailText:(NSString *)detailText hideAfterDelay:(NSTimeInterval)delay {
self.contentCustomView = [[UIImageView alloc] initWithImage:[QMUIHelper imageWithName:@"QMUI_tips_error"]];
[self showTipWithText:text detailText:detailText hideAfterDelay:delay];
}
- (void)showInfo:(NSString *)text {
[self showInfo:text detailText:nil hideAfterDelay:0];
}
- (void)showInfo:(NSString *)text hideAfterDelay:(NSTimeInterval)delay {
[self showInfo:text detailText:nil hideAfterDelay:delay];
}
- (void)showInfo:(NSString *)text detailText:(NSString *)detailText {
[self showInfo:text detailText:detailText hideAfterDelay:0];
}
- (void)showInfo:(NSString *)text detailText:(NSString *)detailText hideAfterDelay:(NSTimeInterval)delay {
self.contentCustomView = [[UIImageView alloc] initWithImage:[QMUIHelper imageWithName:@"QMUI_tips_info"]];
[self showTipWithText:text detailText:detailText hideAfterDelay:delay];
}
- (void)showTipWithText:(NSString *)text detailText:(NSString *)detailText hideAfterDelay:(NSTimeInterval)delay {
QMUIToastContentView *contentView = (QMUIToastContentView *)self.contentView;
contentView.customView = self.contentCustomView;
contentView.textLabelText = text ?: @"";
contentView.detailTextLabelText = detailText ?: @"";
[self showAnimated:YES];
if (delay == QMUITipsAutomaticallyHideToastSeconds) {
[self hideAnimated:YES afterDelay:[QMUITips smartDelaySecondsForTipsText:text]];
} else if (delay > 0) {
[self hideAnimated:YES afterDelay:delay];
}
}
+ (NSTimeInterval)smartDelaySecondsForTipsText:(NSString *)text {
NSUInteger length = text.qmui_lengthWhenCountingNonASCIICharacterAsTwo;
if (length <= 20) {
return 1.5;
} else if (length <= 40) {
return 2.0;
} else if (length <= 50) {
return 2.5;
} else {
return 3.0;
}
}
+ (QMUITips *)showLoadingInView:(UIView *)view {
return [self showLoading:nil detailText:nil inView:view hideAfterDelay:0];
}
+ (QMUITips *)showLoading:(NSString *)text inView:(UIView *)view {
return [self showLoading:text detailText:nil inView:view hideAfterDelay:0];
}
+ (QMUITips *)showLoadingInView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
return [self showLoading:nil detailText:nil inView:view hideAfterDelay:delay];
}
+ (QMUITips *)showLoading:(NSString *)text inView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
return [self showLoading:text detailText:nil inView:view hideAfterDelay:delay];
}
+ (QMUITips *)showLoading:(NSString *)text detailText:(NSString *)detailText inView:(UIView *)view {
return [self showLoading:text detailText:detailText inView:view hideAfterDelay:0];
}
+ (QMUITips *)showLoading:(NSString *)text detailText:(NSString *)detailText inView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
QMUITips *tips = [self createTipsToView:view];
[tips showLoading:text detailText:detailText hideAfterDelay:delay];
return tips;
}
+ (QMUITips *)showWithText:(nullable NSString *)text {
return [self showWithText:text detailText:nil inView:DefaultTipsParentView hideAfterDelay:QMUITipsAutomaticallyHideToastSeconds];
}
+ (QMUITips *)showWithText:(nullable NSString *)text detailText:(nullable NSString *)detailText {
return [self showWithText:text detailText:detailText inView:DefaultTipsParentView hideAfterDelay:QMUITipsAutomaticallyHideToastSeconds];
}
+ (QMUITips *)showWithText:(NSString *)text inView:(UIView *)view {
return [self showWithText:text detailText:nil inView:view hideAfterDelay:0];
}
+ (QMUITips *)showWithText:(NSString *)text inView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
return [self showWithText:text detailText:nil inView:view hideAfterDelay:delay];
}
+ (QMUITips *)showWithText:(NSString *)text detailText:(NSString *)detailText inView:(UIView *)view {
return [self showWithText:text detailText:detailText inView:view hideAfterDelay:0];
}
+ (QMUITips *)showWithText:(NSString *)text detailText:(NSString *)detailText inView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
QMUITips *tips = [self createTipsToView:view];
[tips showWithText:text detailText:detailText hideAfterDelay:delay];
return tips;
}
+ (QMUITips *)showSucceed:(nullable NSString *)text {
return [self showSucceed:text detailText:nil inView:DefaultTipsParentView hideAfterDelay:QMUITipsAutomaticallyHideToastSeconds];
}
+ (QMUITips *)showSucceed:(nullable NSString *)text detailText:(nullable NSString *)detailText {
return [self showSucceed:text detailText:detailText inView:DefaultTipsParentView hideAfterDelay:QMUITipsAutomaticallyHideToastSeconds];
}
+ (QMUITips *)showSucceed:(NSString *)text inView:(UIView *)view {
return [self showSucceed:text detailText:nil inView:view hideAfterDelay:0];
}
+ (QMUITips *)showSucceed:(NSString *)text inView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
return [self showSucceed:text detailText:nil inView:view hideAfterDelay:delay];
}
+ (QMUITips *)showSucceed:(NSString *)text detailText:(NSString *)detailText inView:(UIView *)view {
return [self showSucceed:text detailText:detailText inView:view hideAfterDelay:0];
}
+ (QMUITips *)showSucceed:(NSString *)text detailText:(NSString *)detailText inView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
QMUITips *tips = [self createTipsToView:view];
[tips showSucceed:text detailText:detailText hideAfterDelay:delay];
return tips;
}
+ (QMUITips *)showError:(nullable NSString *)text {
return [self showError:text detailText:nil inView:DefaultTipsParentView hideAfterDelay:QMUITipsAutomaticallyHideToastSeconds];
}
+ (QMUITips *)showError:(nullable NSString *)text detailText:(nullable NSString *)detailText {
return [self showError:text detailText:detailText inView:DefaultTipsParentView hideAfterDelay:QMUITipsAutomaticallyHideToastSeconds];
}
+ (QMUITips *)showError:(NSString *)text inView:(UIView *)view {
return [self showError:text detailText:nil inView:view hideAfterDelay:0];
}
+ (QMUITips *)showError:(NSString *)text inView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
return [self showError:text detailText:nil inView:view hideAfterDelay:delay];
}
+ (QMUITips *)showError:(NSString *)text detailText:(NSString *)detailText inView:(UIView *)view {
return [self showError:text detailText:detailText inView:view hideAfterDelay:0];
}
+ (QMUITips *)showError:(NSString *)text detailText:(NSString *)detailText inView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
QMUITips *tips = [self createTipsToView:view];
[tips showError:text detailText:detailText hideAfterDelay:delay];
return tips;
}
+ (QMUITips *)showInfo:(nullable NSString *)text {
return [self showInfo:text detailText:nil inView:DefaultTipsParentView hideAfterDelay:QMUITipsAutomaticallyHideToastSeconds];
}
+ (QMUITips *)showInfo:(nullable NSString *)text detailText:(nullable NSString *)detailText {
return [self showInfo:text detailText:detailText inView:DefaultTipsParentView hideAfterDelay:QMUITipsAutomaticallyHideToastSeconds];
}
+ (QMUITips *)showInfo:(NSString *)text inView:(UIView *)view {
return [self showInfo:text detailText:nil inView:view hideAfterDelay:0];
}
+ (QMUITips *)showInfo:(NSString *)text inView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
return [self showInfo:text detailText:nil inView:view hideAfterDelay:delay];
}
+ (QMUITips *)showInfo:(NSString *)text detailText:(NSString *)detailText inView:(UIView *)view {
return [self showInfo:text detailText:detailText inView:view hideAfterDelay:0];
}
+ (QMUITips *)showInfo:(NSString *)text detailText:(NSString *)detailText inView:(UIView *)view hideAfterDelay:(NSTimeInterval)delay {
QMUITips *tips = [self createTipsToView:view];
[tips showInfo:text detailText:detailText hideAfterDelay:delay];
return tips;
}
+ (QMUITips *)createTipsToView:(UIView *)view {
QMUITips *tips = [[QMUITips alloc] initWithView:view];
[view addSubview:tips];
tips.removeFromSuperViewWhenHide = YES;
return tips;
}
+ (void)hideAllTipsInView:(UIView *)view {
[self hideAllToastInView:view animated:YES];
}
+ (void)hideAllTips {
[self hideAllToastInView:DefaultTipsParentView animated:YES];
}
@end