美文网首页
iOS引导蒙版-工具类封装

iOS引导蒙版-工具类封装

作者: Samson_Xu | 来源:发表于2017-05-08 17:37 被阅读0次

前言:引导蒙版是现在很流行的一种APP欢迎方式,现在的项目之前两次版本的更新迭代都用到了引导蒙版,本来是在控制器中直接添加的,毕竟也就几行代码,但是后来发现这也是个常用功能,还是封装成一个工具类比较好。


Github看这里

思路整理:

1、创建蒙版工具类对象

2、用户登录时根据本地数据判断时候为首次登陆

3、如果为首次登陆,将蒙版添加到当前窗口上

具体实现:

1、创建蒙版工具类对象

新建TipMaskView对象,懒加载图片数组,imageView和剩余视图张数,声明初始化方法

@interface TipMaskView : UIView

@property (nonatomic, copy) NSArray *imageArray;

@property (nonatomic, strong) UIImageView *imageView;

@property (nonatomic, assign) NSInteger remainCount;

-(instancetype)initWithImages:(NSArray *)images;

这里的思路是通过-(instancetype)initWithImages:(NSArray *)images这一初始化方法,将蒙版图片传值到我们创建的TipMaskView工具类对象中。通过改变imageView上图片的方式,动态逐个显示引导蒙版。

/**在初始化方法中对fram和imageArray进行赋值

*/

-(instancetype)initWithImages:(NSArray *)images{

if (self = [super init]) {

self.frame = [UIScreen mainScreen].bounds;

self.imageArray = images;

}

return self;

}

定义宏KIPHONE6用来判断当前设备,为了显示效果,一般UI在设计时会至少针对iphone5和iphone6及以上版本设计两套蒙版图给我们使用:

#define KIPHONE6 [UIScreen mainScreen].bounds.size.width > 320?YES:NO

在imageArray不为空的情况下对TipMaskView进行构图,并添加到当前窗口上;

给tipMaskView添加手势,在多个蒙版时进行逐个展示。

- (void)setImageArray:(NSArray *)imageArray{

_imageArray = imageArray;

_remainCount = imageArray.count;

self.imageView = [[UIImageView alloc]initWithFrame:self.frame];

self.imageView.image = [UIImage imageNamed:imageArray[0]];

/**根据设备类型判断需要添加的图片

这里暂时给iphone5图片命名拼接_temp字段,具体命名规范可以根据个人习惯进行修改

*/

if (KIPHONE6 == YES) {

self.imageView.image = [UIImage imageNamed:imageArray[0]];

}else{

self.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@_temp",imageArray[0]]];

};

self.imageView.userInteractionEnabled = YES;

[self addSubview:self.imageView];

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideMask:)];

[self addGestureRecognizer:tap];

[[UIApplication sharedApplication].windows.lastObject addSubview:self];

}

在手势的监听事件中,根据_remainCount判断当前的蒙版,如果为最后一个,动态消失,显示主界面,否则显示下一张:

- (void)hideMask:(UITapGestureRecognizer *)sender{

__weak typeof(self) weakSelf = self;

_remainCount--;

if (_remainCount == 0) {

[UIView animateWithDuration:0.5 animations:^{

weakSelf.alpha = 0;

} completion:^(BOOL finished) {

[weakSelf removeFromSuperview];

sender.enabled = YES;

}];

}else{

if (KIPHONE6 == YES) {

self.imageView.image = [UIImage imageNamed:_imageArray[_imageArray.count-_remainCount]];

}else{

self.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@_temp",_imageArray[_imageArray.count-_remainCount]]];

};

}

}

2、用户登录时根据本地数据判断时候为首次登陆

在界面显示时,根据hasTipMask字段判断用户是否为首次登陆,如果为首次登陆,实例化_tipMaskView对象,

_tipMaskView = [[TipMaskView alloc]initWithImages:@[@"Propmt_main1",@"Propmt_main2"]];

这一行代码即可完成引导蒙版的集成。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if (![defaults boolForKey:@"hasTipMask"]) {

_tipMaskView = [[TipMaskView alloc]initWithImages:@[@"Propmt_main1",@"Propmt_main2"]];

[defaults setBool:YES forKey:@"hasTipMask"];

}

相关文章

网友评论

      本文标题:iOS引导蒙版-工具类封装

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