美文网首页
ios 新手引导封装-guideview

ios 新手引导封装-guideview

作者: yycache | 来源:发表于2020-03-18 09:16 被阅读0次

新手引导分为两部分,一个是蒙版部分 PGGuideView ,另一个是气泡部分 PGBubbleForGuide 组成。整体采用协议的思想实现。如有问题,联系我修改。

demo地址:

https://github.com/penghero/PGGuideView

效果图:

用例:

1、引用头文件

#import "PGGuideView.h"

#import "PGGuideItem.h"

2、遵守协议

<PGGuideViewDelegate>

3、添加初始化

- (void)viewDidAppear:(BOOL)animated {

[super viewDidAppear:animated];

/// 初始化方式1

[PGGuideView showsInViewController:self];

// /// 初始化方式2

// self.guideView = [[PGGuideView alloc] initWithFrame:kKeyWindow.bounds]; //注:由于在ipad中 windows窗口的变化 此处需要修改为bounds 根据父视图改变

// self.guideView.delegate = self;

// [self.guideView showGuideAtIndex:0];

// /// 加到windows上

// [kKeyWindow addSubview:self.guideView];

// /// 加到控制器view上

//// [self.view addSubview:self.guideView];

}

4、实现协议

#pragma mark - PGGuideViewDelegate

- (NSInteger)numberOfGuidesInGuideView:(PGGuideView *)guideView {

return self.guideItems.count;

}

- (void)guideViewEnd:(PGGuideView *)guideView {

NSLog(@"结束---");

}

- (void)guideViewDidSelect:(PGGuideView *)guideView AtIndex:(NSUInteger)index {

// [Tools showAllTextDialog:[NSString stringWithFormat:@"点击 - %lu",(unsigned long)index]];

}

- (PGGuideItem *)guideView:(PGGuideView *)guideView itemForGuideAtIndex:(NSUInteger)index {

CGRect frame = CGRectZero;

CGFloat cornerRadius = 0.0;

PGGuideItem *item = self.guideItems[index];

if (index == 0) {

frame = self.puzzle2.frame;

cornerRadius = 10.0;

} else if (index == 1) {

frame = self.puzzle3.frame;

cornerRadius = 0;

} else if (index == 2) {

frame = self.puzzle1.frame;

cornerRadius = 10.0;

} else if (index == 3) {

frame = self.puzzle5.frame;

// cornerRadius = 10.0;

} else if (index == 4) {

frame = self.puzzle6.frame;

// cornerRadius = 10.0;

}

item.frame = frame;

item.cornerRadius = cornerRadius;

return item;

}

- (NSArray *) guideItems {

PGGuideItem *item0 = PGGuideItem.new;

item0.title = @"鹏哥哥引导1测试测试测试";

item0.isShowIcon = YES;

item0.isTop = YES;

item0.isShowRed = NO;

PGGuideItem *item1 = PGGuideItem.new;

item1.title = @"鹏哥哥引导2测试测试测试";

item1.isShowIcon = YES;

item1.isTop = YES;

item1.isShowRed = YES;

PGGuideItem *item2 = PGGuideItem.new;

item2.title = @"鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试";

item2.isShowIcon = NO;

item2.isTop = NO;

item2.isShowRed = NO;

item2.isShowFlash = YES;

item2.clickType = @"1";

PGGuideItem *item3 = PGGuideItem.new;

item3.title = @"鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试";

item3.isShowIcon = YES;

item3.isTop = NO;

item3.isShowRed = NO;

item3.isShowFlash = NO;

PGGuideItem *item4 = PGGuideItem.new;

item4.title = @"鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试鹏哥哥引导2测试测试测试";

item4.isShowIcon = YES;

item4.isTop = NO;

item4.isShowRed = NO;

item4.isShowFlash = YES;

return @[item0, item1, item2, item3,item4];

}

开源属性

/// 是否显示气泡中老板娘头像icon

@property (nonatomic, assign) BOOL isShowIcon;

/// 气泡颜色

@property (nonatomic, strong) UIColor *bubbleColor;

/// 气泡文字颜色

@property (nonatomic, strong) UIColor *textColor;

/// 设置>0 才有边框 不设置 不显示边框

@property (nonatomic, assign) CGFloat borderWidth;

/// 镂空的frame 一处

@property (nonatomic, assign) CGRect frame;

/// 镂空的frame 二处

@property (nonatomic, assign) CGRect frameOther;

/// 气泡中的内容

@property (nonatomic, strong) NSString *title;

/// 气泡位置 是否在镂空部分上面显示 NO在上方 YES 在下方

@property (nonatomic, assign) BOOL isTop;

/// 镂空的圆角 一处

@property (nonatomic, assign) CGFloat cornerRadius;

/// 镂空的圆角 二处

@property (nonatomic, assign) CGFloat cornerRadiusOther;

/// 是否显示镂空部分红边 默认NO

@property (nonatomic, assign) BOOL isShowRed;

/// 是否显示镂空部分闪动动画

@property (nonatomic, assign) BOOL isShowFlash;

/// 点击区域 0全屏 1镂空区域

@property (nonatomic, strong) NSString *clickType;

/// 是否有两处镂空 默认NO

@property (nonatomic, assign) BOOL isShowOtherFrame;

/// 光圈颜色

@property (nonatomic, strong) UIColor *aperturesColor;

/// 光圈宽度

@property (nonatomic, assign) CGFloat aperturesWidth;

/// 光圈距离

@property (nonatomic, assign) CGFloat aperturesMargin;

/// 光圈圆角

@property (nonatomic, assign) CGFloat aperturesRadius;

协议说明:

/// 引导代理

@protocol PGGuideVCDelegate

/// 引导数据个数

/// @param guideView  guideView description

- (NSInteger)numberOfGuidesInGuideView:(PGGuideView *)guideView;

/// 每个引导数据的显示的详细内容

/// @param guideView guideView description

/// @param index index description

- (PGGuideItem *)guideView:(PGGuideView *)guideView itemForGuideAtIndex:(NSUInteger)index;

/// 点击事件

/// @param guideView guideView description

/// @param index index description

- (void)guideViewDidSelect:(PGGuideView *)guideView AtIndex:(NSUInteger)index;

/// 引导结束

/// @param guideView guideViewdescription

- (void)guideViewEnd:(PGGuideView *)guideView;

相关文章

  • ios 新手引导封装-guideview

    新手引导分为两部分,一个是蒙版部分 PGGuideView ,另一个是气泡部分 PGBubbleForGuide ...

  • iOS新手引导--GuideImageView(二)

    iOS新手引导--GuideImageView(一)iOS新手引导--GuideImageView(二)iOS新手...

  • Android新手引导之---GuideView

    最简洁的新手引导库 一个类实现所有引导功能,完美支持activity fragment listview,可自定...

  • GuideView让遇见不一样

    引导功能GuideView GuideView源码仅有300余行代码;GuideView使用起来只需要4行代码。 ...

  • GuideView:一分钟实现Android遮罩引导视图

    先看一下效果图 主角GuideView登场! GuideView是一种基于DialogFragment实现的引导遮...

  • iOS 透明遮罩层

    有时候功能引导页需要对指定部分可见,其余为黑色遮罩.这时候需要用到图层绘制 注意点封装的GuideView, 需要...

  • iOS 半透明新手引导的封装

    经过一个月的加班加点,由我负责的公司分项目终于完成了阶段性的开发,在改bug的空余,总结了一下工程中用到的一些东西...

  • iOS 引导蒙版封装流程

    参考文档: 一劳永逸,iOS引导蒙版封装流程

  • 文章收集

    关于视图的周期流程一篇文章揭秘 iOS 布局相关问题 封装SDK流程iOS 自己封装的SDK 打包与合并,新手教程...

  • iOS引导页封装

    插眼传送 引导页是App必不可少的功能之一;本Demo用简单有效的代码,封装引导页,仅需3行代码搞定,同时支持GI...

网友评论

      本文标题:ios 新手引导封装-guideview

      本文链接:https://www.haomeiwen.com/subject/inafyhtx.html