您的位置:首页 > 移动开发 > IOS开发

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

2016-07-16 14:08 411 查看
滑动视图的实现过程:

     代码如下:

.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 = [super
initWithFrame:frame]) {

        

    }

         return
self;

}

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

    _imageArray = imageArray;

    //初始化控件

    [self
creatView];

}

#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;

    //添加到视图上

    [self
addSubview:_scrollView];

    

//  设置分页控件的属性

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

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

    _pageControl.numberOfPages =
_imageArray.count;

   
//设置当前分页数

    _pageControl.currentPage =
0;

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

    _pageControl.pageIndicatorTintColor = [UIColor
redColor];

   
//添加到视图上面

    [self
addSubview:_pageControl];

//    设置左中右三个imageView的frame

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

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

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

    //添加到视图上

    [_scrollView
addSubview:_leftImage];

    [_scrollView
addSubview:_middenImage];

    [_scrollView
addSubview:_rightImage];

    

    

    //开启定时器

    _timer = [NSTimer
scheduledTimerWithTimeInterval:1
target:self
selector:@selector(timeAction:)
userInfo:nil
repeats:YES];

//    设置图片

    [self
loadImage];

}

- (void) loadImage {

   

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

    _middenImage.image = [UIImage
imageNamed:_imageArray[_currentNum]];

    

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

    _leftImage.image = [UIImage
imageNamed:_imageArray[leftIndex]];

    

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

    _rightImage.image = [UIImage
imageNamed:_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;

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

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

    }

    [self
loadImage];

//设置滑动区域的大小

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

}

#pragma mark - 定时器的方法

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

    

    _currentNum =
_currentNum  % _imageArray.count;

    [self
loadImage];

    _currentNum++;

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

    

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios