forked from nobre84/UIActivityIndicator-for-SDWebImage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUIView+UIActivityIndicatorForSDWebImage.m
58 lines (43 loc) · 1.63 KB
/
UIView+UIActivityIndicatorForSDWebImage.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
//
// UIView+UIActivityIndicatorForSDWebImage_h.m
// Pods
//
// Created by Rafael Nobre on 07/07/14.
//
//
#import "UIView+UIActivityIndicatorForSDWebImage.h"
#import <objc/runtime.h>
static char TAG_ACTIVITY_INDICATOR;
@implementation UIView (UIActivityIndicatorForSDWebImage)
@dynamic activityIndicator;
- (UIActivityIndicatorView *)activityIndicator {
return (UIActivityIndicatorView *)objc_getAssociatedObject(self, &TAG_ACTIVITY_INDICATOR);
}
- (void)setActivityIndicator:(UIActivityIndicatorView *)activityIndicator {
objc_setAssociatedObject(self, &TAG_ACTIVITY_INDICATOR, activityIndicator, OBJC_ASSOCIATION_RETAIN);
}
- (void)addActivityIndicatorWithStyle:(UIActivityIndicatorViewStyle) activityStyle {
if (!self.activityIndicator) {
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:activityStyle];
self.activityIndicator.autoresizingMask = UIViewAutoresizingNone;
dispatch_async(dispatch_get_main_queue(), ^(void) {
[self addSubview:self.activityIndicator];
[self updateActivityIndicatorPosition];
});
}
dispatch_async(dispatch_get_main_queue(), ^(void) {
[self.activityIndicator startAnimating];
});
}
-(void)updateActivityIndicatorPosition {
if (self.activityIndicator) {
self.activityIndicator.center = CGPointMake((CGRectGetWidth(self.frame) / 2.0f), (CGRectGetHeight(self.frame) / 2.0));
}
}
- (void)removeActivityIndicator {
if (self.activityIndicator) {
[self.activityIndicator removeFromSuperview];
self.activityIndicator = nil;
}
}
@end