UIScrollView(滑动切换图片,图片的循环切换(自动))

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(00WIDTHHEIGHT)];

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, 然后07放最后一张,和最前面的一张图.循环滚动 

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

    }

}










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值