美文网首页
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