|
8 | 8 |
|
9 | 9 | #import "GuideCoverView.h" |
10 | 10 |
|
| 11 | +@interface GuideCoverView () |
| 12 | +{ |
| 13 | + NSUInteger _currentPageDraw; |
| 14 | +} |
| 15 | +@end |
11 | 16 |
|
12 | 17 | @implementation GuideCoverView |
13 | 18 | - (instancetype)initWithItems:(NSArray *)items{ |
14 | 19 | if (self = [super init]) { |
15 | 20 | self.ItemArr = items.mutableCopy; |
16 | 21 | self.frame = [UIScreen mainScreen].bounds; |
| 22 | + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(next:)]; |
| 23 | + [self addGestureRecognizer:tap]; |
| 24 | + _currentPageDraw = 0; |
17 | 25 | [self drawRegions]; |
18 | 26 | } |
19 | 27 | return self; |
20 | 28 | } |
| 29 | +- (void)next:(UITapGestureRecognizer *)sender{ |
| 30 | + [self removeAllSubLayers]; |
| 31 | + _currentPageDraw ++; |
| 32 | + if (_currentPageDraw < self.ItemArr.count) { |
| 33 | + [self drawRegions]; |
| 34 | + }else{ |
| 35 | + [self removeFromSuperview]; |
| 36 | + } |
| 37 | +} |
21 | 38 | - (void)drawRegions{ |
22 | | - if (self.ItemArr.count) { |
| 39 | + if (self.ItemArr.count && _currentPageDraw < self.ItemArr.count) { |
| 40 | + id item = self.ItemArr[_currentPageDraw]; |
| 41 | + if ([item isKindOfClass:[NSArray class]]) { |
| 42 | + [self drawOneGroup:item]; |
| 43 | + }else if ([item isKindOfClass:[LoaderItemModel class]]){ |
| 44 | + [self drawOneGroup:@[item]]; |
| 45 | + } |
| 46 | + } |
| 47 | +} |
| 48 | + |
| 49 | +- (void)drawOneGroup:(NSArray *)models{ |
| 50 | + if (models.count) { |
23 | 51 | UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.frame]; |
24 | 52 | CAShapeLayer *layer = [CAShapeLayer layer]; |
25 | | - for (LoaderItemModel *model in self.ItemArr) { |
| 53 | + for (LoaderItemModel *model in models) { |
26 | 54 | if (model.loaderImage.length) { |
27 | 55 | UIImageView *image = [[UIImageView alloc]initWithImage:[UIImage imageNamed:model.loaderImage]]; |
28 | 56 | image.frame = CGRectMake(model.loaderRect.origin.x, model.loaderRect.origin.y, image.image.size.width, image.image.size.height); |
@@ -66,7 +94,11 @@ - (UIBezierPath *)drawRegionWith:(LoaderItemModel *)model{ |
66 | 94 | case Circle: |
67 | 95 | { |
68 | 96 | CGFloat rad = MAX(model.region.rect.size.width, model.region.rect.size.height); |
69 | | - bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(model.region.rect.origin.x,model.region.rect.origin.y, rad, rad)]; |
| 97 | + if (rad == model.region.rect.size.width) { |
| 98 | + bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(model.region.rect.origin.x,model.region.rect.origin.y - (rad - model.region.rect.size.height)/2, rad, rad)]; |
| 99 | + }else{ |
| 100 | + bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(model.region.rect.origin.x - (rad - model.region.rect.size.width)/2,model.region.rect.origin.y, rad, rad)]; |
| 101 | + } |
70 | 102 | } |
71 | 103 | break; |
72 | 104 | case Oval: |
@@ -235,6 +267,11 @@ - (UIImage*) imageWithUIView:(UIView*) view |
235 | 267 | UIGraphicsEndImageContext(); |
236 | 268 | return tImage; |
237 | 269 | } |
| 270 | +- (void)removeAllSubLayers{ |
| 271 | + for (CALayer *layer in self.layer.sublayers) { |
| 272 | + [layer removeFromSuperlayer]; |
| 273 | + } |
| 274 | +} |
238 | 275 | - (void)showInView:(UIView *)view{ |
239 | 276 | [view addSubview:self]; |
240 | 277 | } |
|
0 commit comments