Skip to content

Commit a1824c2

Browse files
author
沙少盼
committed
新增引导一页一页添加的功能
修复了显示方面的bug
1 parent 689f659 commit a1824c2

File tree

4 files changed

+48
-7
lines changed

4 files changed

+48
-7
lines changed

SPGuidePage/GuideCoverView.m

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,49 @@
88

99
#import "GuideCoverView.h"
1010

11+
@interface GuideCoverView ()
12+
{
13+
NSUInteger _currentPageDraw;
14+
}
15+
@end
1116

1217
@implementation GuideCoverView
1318
- (instancetype)initWithItems:(NSArray *)items{
1419
if (self = [super init]) {
1520
self.ItemArr = items.mutableCopy;
1621
self.frame = [UIScreen mainScreen].bounds;
22+
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(next:)];
23+
[self addGestureRecognizer:tap];
24+
_currentPageDraw = 0;
1725
[self drawRegions];
1826
}
1927
return self;
2028
}
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+
}
2138
- (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) {
2351
UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.frame];
2452
CAShapeLayer *layer = [CAShapeLayer layer];
25-
for (LoaderItemModel *model in self.ItemArr) {
53+
for (LoaderItemModel *model in models) {
2654
if (model.loaderImage.length) {
2755
UIImageView *image = [[UIImageView alloc]initWithImage:[UIImage imageNamed:model.loaderImage]];
2856
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{
6694
case Circle:
6795
{
6896
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+
}
70102
}
71103
break;
72104
case Oval:
@@ -235,6 +267,11 @@ - (UIImage*) imageWithUIView:(UIView*) view
235267
UIGraphicsEndImageContext();
236268
return tImage;
237269
}
270+
- (void)removeAllSubLayers{
271+
for (CALayer *layer in self.layer.sublayers) {
272+
[layer removeFromSuperlayer];
273+
}
274+
}
238275
- (void)showInView:(UIView *)view{
239276
[view addSubview:self];
240277
}

SPGuidePage/LinkImageModel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ typedef NS_ENUM(NSInteger ,LinkImageStyle) {
1717
LinkImageStyleTortuousArrow,
1818
LinkImageStyleTapGesture,
1919
LinkImageStyleRad,
20+
LinkImageStyleLeftRad,
2021
LinkImageStyleCustom
2122
};
2223

SPGuidePage/LinkImageModel.m

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
static NSString *LineMediumArrow = @"直线箭头粗";
1414
static NSString *TortuousArrow = @"折线箭头";
1515
static NSString *TapGesture = @"点击手势";
16-
static NSString *Rad = @"旋转箭头";
16+
static NSString *Rad = @"弯箭头";
17+
static NSString *LeftRad = @"左弯箭头";
1718

1819
@implementation LinkImageModel
1920

@@ -33,6 +34,11 @@ + (instancetype)initWithStyle:(LinkImageStyle)style
3334
model.customImageName = Rad;
3435
}
3536
break;
37+
case LinkImageStyleLeftRad:
38+
{
39+
model.customImageName = LeftRad;
40+
}
41+
break;
3642
case LinkImageStyleDefult:
3743
{
3844
model.customImageName = RotationArrow;

SPGuidePage/ViewController.m

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,7 @@ - (void)viewDidLoad {
4444
LinkImageModel *link2 = [LinkImageModel initWithStyle:LinkImageStyleTortuousArrow CustomImage:nil Position:LinkImagePositionLeftUnder OffsetX:0 OffsetY:0];
4545
TextModel *title1 = [TextModel initWithFont:[UIFont systemFontOfSize:18] text:@"你你你你你你你你你你你你你你你你" Alignment:TextAlignmentLeft];
4646
LoaderItemModel *itemLineroundedRect = [LoaderItemModel initWithLink:link2 Title:title1 Region:LineroundedRect];
47-
48-
4947
GuideCoverView *guideV = [[GuideCoverView alloc]initWithItems:@[itemOval,itemCircle,itemRounded,itemLineroundedRect,itemImage]];
50-
5148
[guideV showInView:self.view];
5249
}
5350

0 commit comments

Comments
 (0)