UIScrollView

UIScrollView循环相册实现

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








评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值