zoukankan      html  css  js  c++  java
  • UIScrollView

    UIScrollView

    UIScrollView重中之重

    • 一定要设置contentSize属性,ScrollView才能进行视图的滚动
    // 设置contentsize
    self.scrollView.contentSize = CGSizeMake(size);
    

    如果用storyboard创建UIScrollView时,UIScrollView会自动创建两个子控件

    • HorizontalScrollIndicator 横向滑动条
    • VerticalScrollIndicator 竖向滑动条
    NSLog(@"%@", self.scrollView.subviews);
    打印结果:
    (
        "<UIImageView: 0x7fc02bd2e140; frame = (297.5 293; 2.5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x7fc02bd2dda0>>",
        "<UIImageView: 0x7fc02bd2c6d0; frame = (293 297.5; 7 2.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x7fc02bd29290>>",
    )
    
    
    • 如果设置了其显示为NO,那么UIScrollView的子控件数组中就不会有这两个子控件的
    self.scrollView.showsHorizontalScrollIndicator = NO;
    self.scrollView.showsVerticalScrollIndicator = NO;
    
    • 用代码创建的UIScrollView,不会有这个两个子控件,但是显示的时候会有的

    contentOffset

    • contentOffset:位移。
    • 表示 内容的左上角与ScrollView的左上角的X.Y的差值
    // x向右位移100, y向下位移100
    self.scrollView.contentOffset = CGPointMake(100, -100);
    

    contentIntset

    • 类似于Android的padding
    • 移动后,内容将不能弹回原点(ScrollView的0,0,0,0),给ScrollView更大的滑动区域
    // 表示上下左右各有20的padding值
    self.scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
    

    scrollView的代理UIScrollViewDelegate

    • 首先要设置代理
    • 代理方法
    // 设置代理,但是self必须遵循协议UIScrollViewDelegate
    self.scrollView.delegate = self;
    
    // 代理方法
    // 正在滑动
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView;
    // 正在滑动缩放
    - (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2);
    // 即将开始拖拽
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
    // 即将结束拖拽
    - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);
    // 结束拖拽
    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
    // 滑动即将结束,滑动惯性即将减速的时候(如果立即停止了,有可能就不会调用)
    - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
    // 滑动结束,滑动惯性减速的时候(如果立即停止了,有可能就不会调用)
    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
    
    // 缩放,返回需要缩放的视图,需要配合下面两个方法使用
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
    self.scrollView.minimumZoomScale = 0.2;
    self.scrollView.maximumZoomScale = 1.0;
    
    
    // 即将开始缩放
    - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view NS_AVAILABLE_IOS(3_2);
    // 即将结束缩放
    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale;
    
    // 是否可以滑动到顶部
    - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
    // 已经滑动到顶部
    - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;
    
    

    弹簧效果

    // 关闭弹簧效果
    self.scrollView.bounces = NO;
    

    当scrollView为单页时,不显示UIPageControl控件

    // 方式一:直接设置pageCotrol的属性
    self.pageCotrol.hidesForSinglePage = YES;
    // 方式二:根据当前的scrollView的子控件数量来设置pageCotrol的hidden
    self.pageCotrol.hidden = self.scrollView.subviews.count <= 1;
    
  • 相关阅读:
    Mysql权限控制
    ionic中修改图标的问题
    在centos中使用vim编辑器
    使用laravel的任务调度(定时执行任务)
    在预装win8的电脑上换win7系统讲解
    游戏电脑需要看的配置
    数据结构学习之二叉树
    数据结构排序算法之希尔排序
    数据结构排序算法之归并排序
    数据结构排序算法之简单插入排序
  • 原文地址:https://www.cnblogs.com/coderAlin/p/4555671.html
Copyright © 2011-2022 走看看