UI 06 ScrollView 的手动循环播放 与 自动循环播放

如果想要循环播放的话, scrollView的照片前要加上最后一张图片, 最后要加上第一张图片.

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    //继承于UIView,可以通过创建view的四步对ScrollView进行创建.
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    scrollView.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:scrollView];
    [scrollView release];

    //重要的属性,这个属性可以让scrollView滚动起来
    //contentSize 设置scrolloView的滚动范围:
    scrollView.contentSize = CGSizeMake(WIDTH* 12, HEIGHT );
    //按页来进行滚动
    scrollView.pagingEnabled = YES;
    // 显示图片
    UIImageView *imageview1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"10.jpg"]];
    imageview1.frame = CGRectMake(0, 0, WIDTH, HEIGHT);
    [scrollView addSubview:imageview1];
    [imageview1 release];
    for (NSInteger i = 1 ; i < 11; i++) {
        NSString *picName = [NSString stringWithFormat:@"%ld.jpg",i];
        // 通过图片名创建UIImage
        UIImageView *imageView  = [[UIImageView alloc] initWithImage:[UIImage imageNamed:picName]];
        imageView.frame  = CGRectMake(WIDTH * i, 0, WIDTH, HEIGHT);
        // 把ImageView放到对应的scrollView上
        [scrollView addSubview:imageView];
        [imageView release];
    }
    UIImageView *imageViewLast = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.jpg"]];
    [scrollView addSubview:imageViewLast];
    imageViewLast.frame = CGRectMake(WIDTH * 11,0, WIDTH, HEIGHT);
    [imageViewLast release];

    scrollView.delegate = self;
    scrollView.tag = 1000;

    scrollView.bounces = NO;
    scrollView.contentOffset = CGPointMake(WIDTH, 0);

    [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(change) userInfo:nil repeats:YES];

}
// 这个是与NSTimer 结合,直接自动循环播放.
- (void)change{
    UIScrollView *scrollview = (UIScrollView *)[self.view viewWithTag:1000];
    [scrollview setContentOffset:CGPointMake(scrollview.contentOffset.x + WIDTH,0) animated:YES];
    if (scrollview.contentOffset.x
         == WIDTH * 11) {
        scrollview.contentOffset = CGPointMake(WIDTH, 0);
    }
}

若是想要滑动循环播放,需要用到协议方法, 不要忘了在上面签订协议并设定代理人.
使用NSTimer 后,就不会再走协议中的方法啦.所以偏移量的设定,在NSTimer中再重新做修改.

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

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

    // 偏移量.
    if (scrollView.contentOffset.x == 0) {
        scrollView.contentOffset = CGPointMake(WIDTH * 10,0);
    }else if(scrollView.contentOffset.x == WIDTH * 10){
        scrollView.contentOffset = CGPointMake(WIDTH, 0);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值