iOS开发iOS UIKit学无止境

iOS引导页的快速引用

2016-09-23  本文已影响1105人  Lonely_Flyer
static const NSInteger NumberOfGuide = 3; //引导页数
 //修改图片名称
imgView.image = [UIImage imageNamed:[NSString stringWithFormat:@"default_%d",i+1]];

- (void)viewWillAppear:(BOOL)animated{
    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"isFirstLaunch"]) {
        _isFirstLaunch = YES;
        [[NSUserDefaults standardUserDefaults] setBool:_isFirstLaunch forKey:@"isFirstLaunch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        _guideView = [[MQGuideView alloc]initWithFrame:[UIScreen mainScreen].bounds];
        _guideView.delegate = self;
        [self.view addSubview:_guideView];
    }
}
- (void)onPassButtonPressed{
    [UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
       _guideView.alpha = 0;
    } completion:^(BOOL finished) {
        [_guideView removeFromSuperview];
    }];
}

下面是.h和.m文件

.h文件
@protocol MQGuideViewDelegate <NSObject>
//代理方法 跳过引导页
-(void)onPassButtonPressed;
@end


@interface MQGuideView : UIView
@property (nonatomic,weak)  id<MQGuideViewDelegate> delegate;
@end

.m文件
@interface MQGuideView () <UIScrollViewDelegate>
@property (nonatomic, strong) UIPageControl *pageControl;
@end

@implementation MQGuideView

static const NSInteger NumberOfGuide = 3; //引导页数

- (instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        CGFloat screenH = [UIScreen mainScreen].bounds.size.height;
        CGFloat screenW = [UIScreen mainScreen].bounds.size.width;
        UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, screenW, screenH)];
        [self addSubview:scrollView];
        
        UIButton *passBtn = [[UIButton alloc]initWithFrame:CGRectMake(screenW-70.0f, 40.0f, 50.0f, 30.0f)];
        [passBtn addTarget:self action:@selector(onFinishedIntroButtonPressed) forControlEvents:UIControlEventTouchUpInside];
        [passBtn setImage:[UIImage imageNamed:@"default_pass"] forState:UIControlStateNormal];
        [self addSubview:passBtn];
        
        scrollView.delegate = self;
        scrollView.backgroundColor = [UIColor whiteColor];
        scrollView.showsHorizontalScrollIndicator = NO;
        scrollView.showsVerticalScrollIndicator = NO;
        scrollView.contentSize = CGSizeMake(screenW*NumberOfGuide, screenH);
        scrollView.pagingEnabled = YES;
        for (int i=0; i<NumberOfGuide; i++) {
            UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(i*screenW, 0, screenW, screenH)];
            imgView.contentMode = UIViewContentModeScaleAspectFit;
            imgView.userInteractionEnabled = YES;
            //修改图片名称
            imgView.image = [UIImage imageNamed:[NSString stringWithFormat:@"default_%d",i+1]];
            [scrollView addSubview:imgView];
            
            if (i == (NumberOfGuide-1)) {
                UIButton *startBtn = [[UIButton alloc]initWithFrame:CGRectMake(self.center.x, self.frame.size.height*.8, 150.0f, 40.0f)];
                startBtn.center = CGPointMake(self.center.x, self.frame.size.height*.8);
                startBtn.layer.cornerRadius = 5.0f;
                startBtn.layer.masksToBounds = YES;
                startBtn.titleLabel.font = [UIFont systemFontOfSize:17.0f];
                startBtn.backgroundColor = [UIColor brownColor];
                [startBtn setTitle:@"立即开启" forState:UIControlStateNormal];
                [startBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
                [startBtn addTarget:self action:@selector(onFinishedIntroButtonPressed) forControlEvents:UIControlEventTouchUpInside];
                [imgView addSubview:startBtn];
            }
        }
        
        _pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(screenW/2-40.0f, screenH-40.0f, 80.0f, 10.0f)];
        [self addSubview:_pageControl];
        _pageControl.enabled = YES;
        _pageControl.numberOfPages = NumberOfGuide;
        _pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
        _pageControl.currentPageIndicatorTintColor = [UIColor redColor];
    }
    return  self;
}
#pragma mark - 跳过引导代理
- (void)onFinishedIntroButtonPressed{
    [self.delegate onPassButtonPressed];
}

#pragma mark - 滑动代理
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    CGFloat scrollViewW = scrollView.width;
    CGFloat x = scrollView.contentOffset.x;
    int page = (x + scrollViewW/2)/scrollViewW;
    _pageControl.currentPage = page;
}
@end

github链接 https://github.com/zmqFlyer/MQGuideView/tree/master

上一篇下一篇

猜你喜欢

热点阅读