ios 引导页/半透明引导页做法

在这里做的不是程序入口处的新特性引导页
是程序中某一界面的新手引导
当然,思路也适用于新特性引导页的做法

这里用的图片不是整张图,因为整张图在适配屏幕的时候会有压缩,图片较大也比较占用资源

基于MVC的设计模式考虑,我把引导页的view层写在了一个单独的类里,界面和布局我用xib做的
这里写图片描述

#import <UIKit/UIKit.h>

@interface WTNewbieGuideView : UIView
@property (weak, nonatomic) IBOutlet UIImageView *xin1TextImg;
@property (weak, nonatomic) IBOutlet UIImageView *xin1Img;
@property (weak, nonatomic) IBOutlet UIImageView *xin2TextImg;
@property (weak, nonatomic) IBOutlet UIImageView *xin2Img;


@property (weak, nonatomic) IBOutlet UIImageView *xin3TextImg;
@property (weak, nonatomic) IBOutlet UIImageView *xin3Img;
@end
@implementation WTNewbieGuideView

-(void)awakeFromNib{
    [super awakeFromNib];

    self.backgroundColor = [UIColor blackColor];
    self.alpha = 0.7;
    self.userInteractionEnabled = YES;
}

@end

以上是view里的代码

下面是控制器里的代码
因为控制器的界面不是我做的,所以关于界面控件的显示隐藏我单独用hidden去写
整体思路大概是 在点击事件里去判断当前控制器已显示的控件,来去做显示和隐藏
然后通过判断程序的Version信息来让引导页只显示一次
在viewDidLoad里直接去调就可以了

//加载新手引导页
[self setupNewbieGuide];
#pragma mark 新手引导

-(void)setupNewbieGuide{
    //判断程序的Version信息 让引导页只显示一次
    NSString *currentVersion =  [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    NSString *saveVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"saveVersion"];

    //  测试用 >>> 让每次都显示
      saveVersion = @"jksdhf";

    if ([currentVersion isEqualToString:saveVersion]) {
        //如果一样  就不显示引导页
    } else {
        //不一样
        //显示引导页
        [self NewbieGuide];
        //将当前的 Version 信息缓存到沙盒
        [[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"saveVersion"];
    }

}

-(void)NewbieGuide{

    //禁用底部界面的用户交互
    [self.view setUserInteractionEnabled:NO];

    WTNewbieGuideView * newbieGuideView = [[[NSBundle mainBundle] loadNibNamed:@"WTNewbieGuideView" owner:nil options:nil] lastObject];
    newbieGuideView.frame = self.view.bounds;
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissGuideView)];
    [newbieGuideView addGestureRecognizer:tap];
    [self.navigationController.view addSubview:newbieGuideView];

    self.newbieGuideView = newbieGuideView;

    //第一层引导页
    _startSingBtn.hidden = YES;
    self.songBgImg.hidden = NO;
    newbieGuideView.xin2Img.hidden = YES;
    newbieGuideView.xin2TextImg.hidden = YES;
    newbieGuideView.xin3Img.hidden = YES;
    newbieGuideView.xin3TextImg.hidden = YES;
}

-(void)dismissGuideView{
    //第二层引导页
    if (self.newbieGuideView.xin1Img.hidden == NO) {
        _startSingBtn.hidden = NO;
        self.songBgImg.hidden = YES;
        self.newbieGuideView.xin1Img.hidden = YES;
        self.newbieGuideView.xin1TextImg.hidden = YES;
        self.newbieGuideView.xin2Img.hidden = NO;
        self.newbieGuideView.xin2TextImg.hidden = NO;
        self.noticeView.noticeImg.hidden = YES;
    }
    //三层引导页
else if (self.newbieGuideView.xin2Img.hidden == NO) {
        self.newbieGuideView.xin1Img.hidden = YES;
        self.newbieGuideView.xin1TextImg.hidden = YES;
        self.newbieGuideView.xin2Img.hidden = YES;
        self.newbieGuideView.xin2TextImg.hidden = YES;
        self.noticeView.noticeImg.hidden = NO;
        self.newbieGuideView.xin3Img.hidden = NO;
        self.newbieGuideView.xin3TextImg.hidden = NO;
        self.navigationItem.rightBarButtonItem.title = @" ";
    }
//关闭引导页
else if (self.newbieGuideView.xin3Img.hidden == NO) {

        self.newbieGuideView.hidden = YES;
        self.navigationItem.rightBarButtonItem.title = @"原唱";
        //最后记得开启用户交互,否则引导页结束界面就点不动了
        [self.view setUserInteractionEnabled:YES];
    }  
}
附上几张效果图

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值