您的位置:首页 > 其它

ScollView pageView

2015-12-18 00:00 288 查看
摘要: ScollView

#import "ViewController.h"

#define ImageCount 10
#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height

@interface ViewController ()<UIScrollViewDelegate>
{
UIScrollView *_scrollView;
UIImageView *_leftImageView;
UIImageView *_middleImageView;
UIImageView *_rightImageView;
int currentImage;

UIPageControl *_pageControl;
}

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

_scrollView = [[UIScrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];
[self.view addSubview:_scrollView];

_scrollView.delegate = self;
_scrollView.contentSize = CGSizeMake(_scrollView.frame.size.width*3, _scrollView.frame.size.height);
//设置当前scrollView显示中间区域
_scrollView.contentOffset = CGPointMake(_scrollView.frame.size.width, 0);

_scrollView.pagingEnabled = YES;

//添加imageView
//左
_leftImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
_leftImageView.contentMode = UIViewContentModeScaleAspectFill;
[_scrollView addSubview:_leftImageView];
//右
_rightImageView = [[UIImageView alloc]initWithFrame:CGRectMake(SCREEN_WIDTH*2, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
_rightImageView.contentMode = UIViewContentModeScaleAspectFill;
[_scrollView addSubview:_rightImageView];
//中
_middleImageView = [[UIImageView alloc]initWithFrame:CGRectMake(SCREEN_WIDTH, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
_middleImageView.contentMode = UIViewContentModeScaleAspectFill;
[_scrollView addSubview:_middleImageView];

currentImage = 0;

//初始化pageControl
_pageControl = [[UIPageControl alloc]init];
//根据页数返回pageControl合适的大小
CGSize size = [_pageControl sizeForNumberOfPages:ImageCount];
_pageControl.center = CGPointMake(SCREEN_WIDTH/2, 580);
_pageControl.bounds = CGRectMake(0, 0, size.width, size.height);
// _pageControl.backgroundColor = [UIColor whiteColor];
//设置颜色
_pageControl.pageIndicatorTintColor = [UIColor redColor];
_pageControl.currentPageIndicatorTintColor = [UIColor grayColor];
_pageControl.numberOfPages = ImageCount;
_pageControl.currentPage = currentImage;
[self.view addSubview:_pageControl];

[self setImage];

[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(changeImage) userInfo:nil repeats:YES];

}

-(void)changeImage
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0f];
_scrollView.contentOffset = CGPointMake(SCREEN_WIDTH*2, 0);
[UIView commitAnimations];
currentImage = (currentImage+1)%ImageCount;
_scrollView.contentOffset = CGPointMake(SCREEN_WIDTH, 0);
[self setImage];
}

-(void) setImage
{
_pageControl.currentPage = currentImage;
// 加载默认图片
_leftImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d",(ImageCount+currentImage-1)%ImageCount]];
_rightImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d",(currentImage+1)%ImageCount]];
_middleImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d",currentImage]];
}

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//如果向右滑动
if (scrollView.contentOffset.x == SCREEN_WIDTH*2) {
currentImage = (currentImage+1)%ImageCount;
scrollView.contentOffset = CGPointMake(SCREEN_WIDTH, 0);
[self setImage];
}
//如果向左滑动
else if(scrollView.contentOffset.x == 0)
{
currentImage = (ImageCount+currentImage-1)%ImageCount;
scrollView.contentOffset = CGPointMake(SCREEN_WIDTH, 0);
[self setImage];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: