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

来源:互联网 发布:英语口语交流软件 编辑:程序博客网 时间:2024/05/22 12:06

如果想要循环播放的话, 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);    }}
0 0