IOS 学习---滑动视图(UIScrollerView)详解

滑动视图的使用

   
   //滑动视图的创建,并设置frame值
    UIScrollView *scroller = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 375, 300)];
    // 设置滑动视图内容的大小
    scroller.contentSize = CGSizeMake(800, 900);
    scroller.backgroundColor = [UIColor blackColor];
    [self.view addSubview:scroller];
    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 375, 300)];
    view.backgroundColor = [UIColor  blackColor];
    [scroller addSubview:view];
    
    UIView *view2 = [[UIView alloc]initWithFrame:CGRectMake(375, 0, 375, 300)];
    view.backgroundColor = [UIColor  orangeColor];
    [scroller addSubview:view2];
    
    UIView *view3 = [[UIView alloc]initWithFrame:CGRectMake(0, 200, 375, 300)];
    view3.backgroundColor = [UIColor  redColor];
    [scroller addSubview:view3];

    //设置滚动条
     scroller.showsHorizontalScrollIndicator = NO;
    
    scroller.showsVerticalScrollIndicator = NO;
    
    //设置样式
    scroller.indicatorStyle = UIScrollViewIndicatorStyleBlack;
    
    scroller.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    scroller.indicatorStyle = UIScrollViewIndicatorStyleDefault;
    
    //反弹效果
    
    //scroller.bounces = NO;
    
    //内容偏移量具体左边和上边的位置时300 200;
    
    //scroller.contentOffset = CGPointMake(300, 200);
    
    //分页显示
    scroller.pagingEnabled = YES;
    //禁用滑动效果
   // scroller.scrollEnabled = NO;  
}

   滑动视图代理方法,对滑动视图进行缩放

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIScrollView *scorllView = [[UIScrollView alloc]initWithFrame:self.view.bounds];
    [self.view addSubview:scorllView];
    UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 568)];
    imgView.image = [UIImage imageNamed:@"5.jpeg"];
    imgView.tag = 100;
    [scorllView addSubview:imgView];
    scorllView.delegate = self;
    //设置图片的缩放比例
    scorllView.minimumZoomScale = 0.5;
    scorllView.maximumZoomScale = 2.0;
    scorllView.bouncesZoom = NO;
    
}
//实现UIScrollerView的代理方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    UIImageView *imgView = (UIImageView *)[scrollView viewWithTag:100];
    return imgView;
}

   滑动视图代理方法,使用滑动视图进行分页,并且使其显示的图片可以可以循环滚动。

   使视图实现循环滚动的整体思想:假如一共有6页,6张图片是按次序排好的,则在第一页的前面放第六张图片,在最后一页的后面放第一页的图片,当图片滑动到该循环的地方时,改变图片的偏移量,这样当用户滑动的时候图片出现的不是太突兀。只是通过改变偏移量就ok了!

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    // 创建滚动视图
    [self creatScrollView];
    
    
}
- (void)creatScrollView
{
   //创建滑动视图
    UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, KWIDTH, KHEIGHT)];
    
    scrollView.backgroundColor = [UIColor blueColor];
    [self.view addSubview:scrollView];
    
    //设置滑动视图的分页状态
    scrollView.pagingEnabled = YES;
   // 利用for循环,在滑动视图上添加imageview 并添加图片
    for (int i = 0; i < 6; i ++)
    {
        NSString *imgStr = [NSString stringWithFormat:@"%d.jpeg",i + 1];
        UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake((i + 1) * KWIDTH, 0 , KWIDTH, KHEIGHT)];
        imgView.image = [UIImage imageNamed:imgStr];
        [scrollView addSubview:imgView];

        
    }
    //设置滑动视图内容的大小
    scrollView.contentSize = CGSizeMake(KWIDTH * 8, KHEIGHT);
    //设置代理
    scrollView.delegate = self;
    
    UIImage *img1 = [UIImage imageNamed:@"1.jpeg"];
    UIImageView *imgView1 = [[UIImageView alloc]initWithFrame:CGRectMake(7 * KWIDTH, 0, KWIDTH, KHEIGHT)];
    imgView1.image = img1;
    [scrollView addSubview:imgView1];
    
    UIImage *img2 = [UIImage imageNamed:@"6.jpeg"];
    UIImageView *imgView2 = [[UIImageView alloc]initWithFrame:CGRectMake( 0, 0, KWIDTH, KHEIGHT)];
    imgView2.image = img2;
    [scrollView addSubview:imgView2];
    
    //pageContr为全局变量
    pageContr = [[UIPageControl alloc]initWithFrame:CGRectMake(150, KHEIGHT - 50, 100, 50)];
    设置当前页及页数
    pageContr.currentPage = 0;
    pageContr.numberOfPages = 6;
    [self.view addSubview:pageContr];
    

    
}
//实现scrollViewDidEndDecelerating,滑动视图没有速度时调用的代理方法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    pageContr.currentPage = (int)(scrollView.contentOffset.x + KWIDTH/2)/KWIDTH;
    
    if (scrollView.contentOffset.x == 7 * KWIDTH)
    {
        scrollView.contentOffset = CGPointMake(KWIDTH, 0);
        
    }
    if(scrollView.contentOffset.x == 0)
    {
        scrollView.contentOffset = CGPointMake(6 * KWIDTH, 0);
        
    }

}







转载于:https://my.oschina.net/zhangqy/blog/505391

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值