UIScrollView继承于UIView
创建
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
scrollView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:scrollView];
[scrollView release];
重要的属性,这个属性可以让scrollView滚动起来
scrollView.contentSize = CGSizeMake(WIDTH * 7, HEIGHT * 7);
注意:WIDTH * 7, HEIGHT * 7,意思是滚动的范围是 7个宽度于 7个高度
按页来进行滚动
scrollView.pagingEnabled = YES;
加图片
for (NSInteger i = 580; i < 586; i++) {
先拼接图片名
NSString *picName = [NSString stringWithFormat:@"%ld.jpeg", i];
通过图片名来创建UIImageView
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:picName]];
有n个图片 最后有n - 1个屏幕宽度
imageView.frame = CGRectMake(WIDTH * (i - 580), 0, WIDTH, HEIGHT);
把imageView 放到scrollview上
[scrollView addSubview:imageView];
释放imageView
[imageView release];
现在默认是从580开始的
}
让其默认从582开始
偏移量
scrollView.contentOffset = CGPointMake(WIDTH * 3, 0);
关闭边界回弹效果 默认是yes
scrollView.bounces = NO;
关闭滚动条
scrollView.showsHorizontalScrollIndicator = YES; 平行滚动条消失
scrollView.showsVerticalScrollIndicator = NO;竖直滚动条
注意:水平和垂直的滚动条会作为两个子视图添加到scrollView的子视图里,如果吧滚动条效果关闭,这两个视图就不会添加到scrollView的子视图里
----------------------------------------------------------------------------------------------------------------------------------------------------------实现图片的手动循环滚动(原来有6个图片)
@interface MainViewController ()<UIScrollViewDelegate> (1).签订协议.循环滚动
(2).设置代理人.循环滚动
scrollView.delegate = self;
创建
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
scrollView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:scrollView];
[scrollView release];
关闭边界回弹效果 默认是yes
scrollView.bounces = NO;
关闭滚动条
scrollView.showsHorizontalScrollIndicator = YES; 平行滚动条消失
scrollView.showsVerticalScrollIndicator = NO;竖直滚动条
按页来进行滚动
scrollView.pagingEnabled = YES;
(3)扩充页数为了存放最后一张和第一张.循环滚动
scrollView.contentSize = CGSizeMake(WIDTH * 8, 0);
加图片
for (NSInteger i = 580; i < 586; i++) {
先拼接图片名
NSString *picName = [NSString stringWithFormat:@"%ld.jpeg", i];
通过图片名来创建UIImageView
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:picName]];
(4). 原来的图片位置是0 - 5, 现在把他们放到1 - 6, 然后0和7放最后一张,和最前面的一张图.循环滚动
View.frame = CGRectMake(WIDTH * (i - 579), 0, WIDTH, HEIGHT);
把imageView 放到scrollview上
[scrollView addSubview:imageView];
释放imageView
[imageView release];
}
(5).在第一张之前放最后一张图.循环滚动
UIImageView *imageViewLast = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"585.jpeg"]];
imageViewLast.frame = CGRectMake(0, 0, WIDTH, HEIGHT);
[scrollView addSubview:imageViewLast];
[imageViewLast release];
(6).在最后一张之后放第一张图片.循环滚动
UIImageView *imageViewLast1 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"580.jpeg"]];
imageViewLast1.frame = CGRectMake(7 * WIDTH, 0, WIDTH, HEIGHT);
[scrollView addSubview:imageViewLast1];
[imageViewLast1 release];
(7).设置偏移量,为了不改变图片的顺序, 不然运行后的第一张图片是0位置的图片(1位置前面的最后一张).循环滚动
scrollView.contentOffset = CGPointMake(WIDTH, 0);
(8).方法当到达第一张或者最后一张是进行图片循环
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.x == 0) {偏移量为1位置前面的最后一张图片时,把0位置的偏移量改为6位置的偏移量
scrollView.contentOffset = CGPointMake(WIDTH * 6, 0);
}else if(scrollView.contentOffset.x == WIDTH * 7){
scrollView.contentOffset = CGPointMake(WIDTH, 0);
}
}
----------------------------------------------------------------------------------------------------------------------------------------------------------
自动滚动
(1).创建一个计时器
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(changeImag) userInfo:nil repeats:YES];
(2).设置tag值.自动滚动(因为不是属性)
scrollView.tag = 1000;
-(void)changeImag
{
通过tag值找scrollview
UIScrollView *scroollview = (UIScrollView *)[self.view viewWithTag:1000];
立刻变换的滚动效果
scroollview.contentOffset = CGPointMake(scroollview.contentOffset.x + WIDTH, 0);
切换页面的自动滚动效果
[scroollview setContentOffset:CGPointMake(scroollview.contentOffset.x + WIDTH, 0) animated:YES];
if (scroollview.contentOffset.x == WIDTH * 7) {
scroollview.contentOffset = CGPointMake(WIDTH, 0);
}
}