iOS 开发中滑动视图的循环播放

来源:互联网 发布:power map for mac 编辑:程序博客网 时间:2024/05/21 04:21

滑动视图的实现过程:

     代码如下:

.h文件:

#import <UIKit/UIKit.h>


@interface LoopView : UIView

@property (nonatomic,strong)NSArray *imageArray;

@end

.m文件:

#import "LoopView.h"


@interface LoopView() <UIScrollViewDelegate> {

    //定义一个定时器

    NSTimer *_timer;

}

//滑动视图所需要的属性

@property (nonatomic,strong)UIScrollView *scrollView;

@property (nonatomic,strong)UIPageControl *pageControl;

@property (nonatomic,strong)UIImageView *leftImage;

@property (nonatomic,strong)UIImageView *middenImage;

@property (nonatomic,strong)UIImageView *rightImage;

@property (nonatomic,assign)NSInteger currentNum;


@end


@implementation LoopView

//初始化

- (instancetype) initWithFrame:(CGRect)frame {

    if (self = [superinitWithFrame:frame]) {

        

    }

         returnself;

}

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

    _imageArray = imageArray;

    //初始化控件

    [selfcreatView];

}

#pragma mark - 初始化控件

- (void)creatView {

//    设置宽高

    CGFloat width =self.frame.size.width;

    CGFloat height =self.frame.size.height;

//    设置scrollView的属性

    _scrollView = [[UIScrollView alloc] initWithFrame:self.bounds];

    //打开分页属性

    _scrollView.pagingEnabled =YES;

    //关闭水平和垂直方向的显示条

    _scrollView.showsVerticalScrollIndicator =NO;

    _scrollView.showsHorizontalScrollIndicator =NO;

    //设置滑动范围

    _scrollView.contentSize =CGSizeMake(width * _imageArray.count,height);

    //设置代理方法

    _scrollView.delegate =self;

    //添加到视图上

    [selfaddSubview:_scrollView];

    

//  设置分页控件的属性

    _pageControl = [[UIPageControlalloc] initWithFrame:CGRectMake(0,self.frame.size.height - 30, width,30)];

    //设置分页控件的分页数

    _pageControl.numberOfPages =_imageArray.count;

    //设置当前分页数

    _pageControl.currentPage =0;

    //设置分页控件的显示颜色

    _pageControl.pageIndicatorTintColor = [UIColorredColor];

    //添加到视图上面

    [selfaddSubview:_pageControl];

//    设置左中右三个imageViewframe

    _leftImage = [[UIImageViewalloc] initWithFrame:CGRectMake(0,0,width , height)];

    _middenImage = [[UIImageViewalloc] initWithFrame:CGRectMake(width,0,width , height)];

    _rightImage = [[UIImageViewalloc] initWithFrame:CGRectMake(width *2, 0,width , height)];

    //添加到视图上

    [_scrollViewaddSubview:_leftImage];

    [_scrollViewaddSubview:_middenImage];

    [_scrollViewaddSubview:_rightImage];

    

    

    //开启定时器

    _timer = [NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(timeAction:)userInfo:nilrepeats:YES];

//    设置图片

    [selfloadImage];

}

- (void) loadImage {

   

    //给左中右三个imageView添加图片

    _middenImage.image = [UIImageimageNamed:_imageArray[_currentNum]];

    

    NSInteger leftIndex = (_currentNum -1 + _imageArray.count)%_imageArray.count;

    _leftImage.image = [UIImageimageNamed:_imageArray[leftIndex]];

    

    NSInteger rightIndex = (_currentNum +1) % _imageArray.count;

    _rightImage.image = [UIImageimageNamed:_imageArray[rightIndex]];

    _pageControl.currentPage =_currentNum;


    

}

#pragma mark - scrollView的代理方法

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

    if (scrollView.contentOffset.x >self.frame.size.width) {

        _currentNum = (_currentNum+1) %_imageArray.count;

    } elseif(scrollView.contentOffset.x <self.frame.size.width){

        _currentNum = (_currentNum -1+_imageArray.count) %_imageArray.count;

    }

    [selfloadImage];

//设置滑动区域的大小

    scrollView.contentOffset =CGPointMake(_scrollView.bounds.size.width,0);

}

#pragma mark - 定时器的方法

- (void)timeAction:(NSTimer *)timer {

    

    _currentNum =_currentNum  % _imageArray.count;

    [selfloadImage];

    _currentNum++;

    _scrollView.contentOffset =CGPointMake(_scrollView.frame.size.width,0);

    

}

@end



0 0
原创粉丝点击