UIScrollView
属性:1.pagingEnabled:让它可以按页滑动 bounces边界回弹
showsHorizontalScrollIndicator 水平滚动条
showsVerticalScrollIndicator 垂直滚动条
// pagingEnabled属性:让它可以按页滑动
scroll.pagingEnabled = YES;
// 边界回弹取消
scroll.bounces= NO;
// 设置水平的滚动条不显示
scroll.showsHorizontalScrollIndicator = NO;
// 设置垂直的滚动条不显示
scroll.showsVerticalScrollIndicator = NO;
有一个非常重要的属性,只有设置它才能滚动contenSize
作用是:指定当前滚动的范围,滚动条是UIImageView类型. 横着滚动,改变宽度,竖着滚动,改变高度(图片个数 *宽度)
滚动的范围如果小,虽然照片铺上了,但是滑动不过去
scroll.contentSize = CGSizeMake(9 * WIDTH, 0);
非常重要的属性:contentOffset偏移量,控制是从哪张图片开始
scroll.contentOffset = CGPointMake(WIDTH, 0);
创建一个可以循环滚动的相册,为了改变过渡的效果可以在最前面和最后面分别加上一张图片
1.在最前面加一张图片
UIImageView *firstImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
[scroll addSubview:firstImageView];
[firstImageView release];
firstImageView.image = [UIImage imageNamed:@"h7.jpeg"];
2.通过循环加载所有的图片,然后在scrollView上显示
for(NSInteger i = 1; i < 10; i++){
NSString *picName = [NSString stringWithFormat:@"h%ld.jpeg", i];
UIImage *image = [UIImage imageNamed:picName];
// 判断imageView的坐标,WIDTH * (i - 1)横坐标, 纵坐标不变
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(WIDTH * i, 0, WIDTH, HEIGHT)];
imageView.image = image;
[scroll addSubview:imageView];
[imageView release];
}
3.在最后的位置加一张图片
UIImageView *lastImageView = [[UIImageView alloc] initWithFrame:CGRectMake(8 * WIDTH, 0, WIDTH, HEIGHT)];
lastImageView.image = [UIImage imageNamed:@"h1.jpeg"];
[scroll addSubview:lastImageView];
[lastImageView release];
4.将偏移量设为第一张图片
scroll.contentOffset = CGPointMake(WIDTH, 0);UIScrollView的协议,最重要的有两个
1.只要一碰就会触发
// 协议方法一:只要一碰他就会触发,是个敏感的宝宝
//- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
// NSLog(@"11");
//}
2.彻底结束的时候触发
5.在这个协议里实现方法,让相册预先滚动(需要签协议,不要忘记了)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
NSLog(@"彻底结束,棒棒的");
if (scrollView.contentOffset.x == 8 * WIDTH) {
scrollView.contentOffset = CGPointMake(WIDTH, 0);
} else if (scrollView.contentOffset.x == 0){
scrollView.contentOffset = CGPointMake(7 * WIDTH, 0);
}
}
6.自动播放的相册的实现方法,设置一个定时器.在定时器内实现方法
<pre name="code" class="objc"> scroll.tag = 1000;
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(changeImage) userInfo:nil repeats:YES];- (void)changeImage{
// NSLog(@"111");
// 1.先找到对应的scrollView
UIScrollView *scroll = (UIScrollView *)[self.view viewWithTag:1000];
// 没有动画效果
// scroll.contentOffset = CGPointMake(scroll.contentOffset.x + WIDTH, 0);
// 有动画效果
[scroll setContentOffset:CGPointMake(scroll.contentOffset.x + WIDTH, 0) animated:YES];
if (scroll.contentOffset.x == 7 * WIDTH){
// 不用动画效果, 看不出过渡效果
scroll.contentOffset = CGPointZero;
}
UIScrollView循环相册实现
419

被折叠的 条评论
为什么被折叠?



