New file |
| | |
| | | // |
| | | // LMJIntroductoryPagesView.m |
| | | // iOSProject |
| | | // |
| | | // Created by windshan on 2017/12/29. |
| | | // Copyright © 2017年 windshan. All rights reserved. |
| | | // |
| | | |
| | | #import "LMJIntroductoryPagesView.h" |
| | | |
| | | @interface LMJIntroductoryPagesView ()<UIScrollViewDelegate> |
| | | /** <#digest#> */ |
| | | @property (nonatomic, strong) NSArray<NSString *> *imagesArray; |
| | | |
| | | @property (nonatomic,strong) UIPageControl *pageControl; |
| | | |
| | | /** <#digest#> */ |
| | | @property (weak, nonatomic) UIScrollView *scrollView; |
| | | |
| | | @end |
| | | |
| | | @implementation LMJIntroductoryPagesView |
| | | |
| | | + (instancetype)pagesViewWithFrame:(CGRect)frame images:(NSArray<NSString *> *)images |
| | | { |
| | | LMJIntroductoryPagesView *pagesView = [[self alloc] initWithFrame:frame]; |
| | | pagesView.imagesArray = images; |
| | | return pagesView; |
| | | } |
| | | |
| | | |
| | | |
| | | - (void)setupUIOnce |
| | | { |
| | | self.backgroundColor = [UIColor clearColor]; |
| | | |
| | | //添加手势 |
| | | UITapGestureRecognizer *singleRecognizer; |
| | | singleRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleSingleTapFrom)]; |
| | | singleRecognizer.numberOfTapsRequired = 1; |
| | | [self.scrollView addGestureRecognizer:singleRecognizer]; |
| | | } |
| | | |
| | | - (void)setImagesArray:(NSArray<NSString *> *)imagesArray { |
| | | _imagesArray = imagesArray; |
| | | [self loadPageView]; |
| | | } |
| | | |
| | | - (void)loadPageView |
| | | { |
| | | [self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; |
| | | self.scrollView.contentSize = CGSizeMake((self.imagesArray.count + 1) * kScreenWidth, kScreenHeight); |
| | | self.pageControl.numberOfPages = self.imagesArray.count; |
| | | |
| | | [self.imagesArray enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { |
| | | |
| | | YYAnimatedImageView *imageView = [[YYAnimatedImageView alloc]init]; |
| | | |
| | | imageView.frame = CGRectMake(idx * kScreenWidth, 0, kScreenWidth, kScreenHeight); |
| | | |
| | | YYImage *image = [YYImage imageNamed:obj]; |
| | | |
| | | [imageView setImage:image]; |
| | | |
| | | [self.scrollView addSubview:imageView]; |
| | | }]; |
| | | } |
| | | |
| | | -(void)handleSingleTapFrom |
| | | { |
| | | if (_pageControl.currentPage == self.imagesArray.count-1) { |
| | | [self removeFromSuperview]; |
| | | } |
| | | } |
| | | |
| | | - (void)scrollViewDidScroll:(UIScrollView *)scrollView { |
| | | CGPoint offSet = scrollView.contentOffset; |
| | | NSInteger page = (offSet.x / (self.bounds.size.width) + 0.5); |
| | | self.pageControl.currentPage = page;//计算当前的页码 |
| | | self.pageControl.hidden = (page > self.imagesArray.count - 1); |
| | | } |
| | | |
| | | -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView |
| | | { |
| | | if (scrollView.contentOffset.x >= (_imagesArray.count) * kScreenWidth) { |
| | | [self removeFromSuperview]; |
| | | } |
| | | } |
| | | |
| | | |
| | | - (UIScrollView *)scrollView |
| | | { |
| | | if(!_scrollView) |
| | | { |
| | | UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.bounds]; |
| | | [self addSubview:scrollView]; |
| | | scrollView.backgroundColor = [UIColor clearColor]; |
| | | scrollView.pagingEnabled = YES;//设置分页 |
| | | scrollView.bounces = NO; |
| | | scrollView.showsHorizontalScrollIndicator = NO; |
| | | scrollView.delegate = self; |
| | | _scrollView = scrollView; |
| | | } |
| | | return _scrollView; |
| | | } |
| | | |
| | | - (UIPageControl *)pageControl |
| | | { |
| | | if(!_pageControl) |
| | | { |
| | | UIPageControl *pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(kScreenWidth/2, kScreenHeight - 60, 0, 40)]; |
| | | pageControl.backgroundColor = [UIColor RandomColor]; |
| | | pageControl.pageIndicatorTintColor = [UIColor RandomColor]; |
| | | pageControl.currentPageIndicatorTintColor = [UIColor RandomColor]; |
| | | [self addSubview:pageControl]; |
| | | _pageControl = pageControl; |
| | | } |
| | | return _pageControl; |
| | | } |
| | | |
| | | - (instancetype)initWithFrame:(CGRect)frame |
| | | { |
| | | if (self = [super initWithFrame:frame]) { |
| | | [self setupUIOnce]; |
| | | } |
| | | return self; |
| | | } |
| | | |
| | | - (void)awakeFromNib |
| | | { |
| | | [super awakeFromNib]; |
| | | [self setupUIOnce]; |
| | | } |
| | | |
| | | - (void)layoutSubviews |
| | | { |
| | | [super layoutSubviews]; |
| | | } |
| | | |
| | | |
| | | @end |