您的位置:首页 > 产品设计 > UI/UE

UIScrollView的循环滚动+UIPageControll

2016-07-28 10:23 309 查看
//

//  ViewController.m

//  UIScrollView循环播放效果

//

//  Created by on 16/7/27.

//  Copyright © 2016年 xiaopeng. All rights reserved.

//

#import "ViewController.h"

int NumbersOfPictures =
9;

@interface ViewController (){

    UIImageView *_leftImageView;

    UIImageView *_currentImageView;

    UIImageView *_rightImageView;

    //_currentIndex用来标识Image显示的位置

    NSInteger _currentIndex;

    

    UIScrollView *_scrollView;

    UIPageControl *_pageControll;

    NSMutableArray *_imageNameList;

    double VIEW_WIDTH;

    double VIEW_HEIGHT;

}

//初始化数据源

-(void)initializeDataSource;

//初始化用户界面

-(void)initializeUserInterface;

@end

@implementation ViewController

- (void)viewDidLoad {

    [super
viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    [self
initializeDataSource];

    [self
initializeUserInterface];

}

//初始化数据源

-(void)initializeDataSource{

    _currentIndex =
0;

    _imageNameList = [[NSMutableArray
alloc]init];

    for(int i=0;i<NumbersOfPictures;i++){

        NSString *imageName = [NSString
stringWithFormat:@"%d.jpg",i];

        [_imageNameList
addObject:imageName];

    }

    

    //初始化宽和高

    VIEW_WIDTH =
CGRectGetWidth(self.view.bounds);

    VIEW_HEIGHT =
CGRectGetHeight(self.view.bounds);

  

}

//从0开始索引

//初始化图片

-(void)initImages{

    NSLog(@"初始化三张图片%ld",_currentIndex);

    _leftImageView.image = [UIImage
imageNamed:_imageNameList[(_currentIndex-1+NumbersOfPictures)%NumbersOfPictures]];

    _currentImageView.image = [UIImage
imageNamed:_imageNameList[_currentIndex]];

    _rightImageView.image = [UIImage imageNamed:_imageNameList[(_currentIndex+1)%NumbersOfPictures]];

    

}

//初始化用户界面

-(void)initializeUserInterface{

    

    

    //初始化_scrollView

    _scrollView = [[UIScrollView
alloc]init];

    [_scrollView
setBounds:self.view.bounds];

    [_scrollView
setCenter:self.view.center];

    _scrollView.pagingEnabled =
YES;

    [_scrollView
setDelegate:self];

    [_scrollView
setBounces:NO];

    [_scrollView
setContentSize:CGSizeMake(3*VIEW_WIDTH,VIEW_HEIGHT)];

    [_scrollView
setContentOffset:CGPointMake(VIEW_WIDTH,
0)];

    [self.view
addSubview:_scrollView];

    

    _pageControll = [[UIPageControl
alloc]initWithFrame:CGRectMake(0,VIEW_HEIGHT-60,
VIEW_WIDTH, 30)];

    [_pageControll
setNumberOfPages:9];

    [_pageControll
setCurrentPage:_currentIndex];

    [_pageControll
setPageIndicatorTintColor:[UIColor
blackColor]];

    [self.view
addSubview:_pageControll];

    

    

    //初始化三张ImageView的位置

    _leftImageView = [[UIImageView
alloc]initWithFrame:CGRectMake(0,
0, VIEW_WIDTH,
VIEW_HEIGHT)];

    _currentImageView = [[UIImageView
alloc]initWithFrame:CGRectMake(VIEW_WIDTH,
0, VIEW_WIDTH,
VIEW_HEIGHT)];

    _rightImageView = [[UIImageView
alloc]initWithFrame:CGRectMake(2*VIEW_WIDTH,
0, VIEW_WIDTH,
VIEW_HEIGHT)];

   
//初始化图片数据

    [self
initImages];

    

    [_scrollView
addSubview:_leftImageView];

    [_scrollView
addSubview:_currentImageView];

    [_scrollView
addSubview:_rightImageView];

    

}

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

}

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

    

    CGPoint contentOffset = [_scrollView
contentOffset];

    if(contentOffset.x>VIEW_WIDTH){

        NSLog(@"向右划");

        _currentIndex=++_currentIndex%NumbersOfPictures;

        

        [_pageControll
setCurrentPage:_currentIndex];

        

        [self
initImages];

        [_scrollView
setContentOffset:CGPointMake(VIEW_WIDTH,
0)];

    }

    else
if(contentOffset.x<VIEW_WIDTH){

        NSLog(@"向左滑动");

        _currentIndex=(_currentIndex-1+NumbersOfPictures)%NumbersOfPictures;

        

        [_pageControll
setCurrentPage:_currentIndex];

        

        [self
initImages];

        [_scrollView
setContentOffset:CGPointMake(VIEW_WIDTH,
0)];

    }

    else{

        NSLog(@"do nothing");

    }

}

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