zoukankan      html  css  js  c++  java
  • UIScrollView  和  UIPageControl  控件整理

    //UIScrollView是可以滚动的view,UIView本身不能滚动,子类UIScrollview拓展了滚动方面的功能。
    //UIScrollView是所有滚动视图的基类。以后的UITableView,UITextView等视图都是继承于该类。
    //使用场景:显示不下(单张大图);内容太多(图文混排);滚动头条(图片);相册等
    UIScrollView核心功能
    //UIScrollview主要专长于两个方面:
    //滚动:contentSize大于frame.size的时候,能够滚动。
    //缩放:自带缩放,可以指定缩放倍数。
     
    /*
        UIScrollView做自动布局
     
        1.首先要确定UIScrollView滚动范围,如果不确定,只要添加控件就会把错
        2.拖入一个view,让这个view确定UIScrollView滚动范围,宽高都要确定
         2.1 UIScrollView水平滚动区域 view的左右两边间距 + view宽度
         2.2 UIScrollView垂直滚动区域 view的上下两边间距 + view高度
     
        注意:如果UIScrollView滚动区域,已经确定了,就不能在弄一个view去确定
     
     */
     
    UIScrollView的属性总结
        属性 作用
        CGPoint contentOffSet         监控目前滚动的位置
        CGSize  contentSize                              滚动范围的大小
        UIEdgeInsets contentInset     视图在scrollView中的位置
        id<UIScrollerViewDelegate>delegate    设置协议
        BOOL directionalLockEnabled      指定控件是否只能在一个方向上滚动
        BOOL bounces                     控制控件遇到边框是否反弹
        BOOL alwaysBounceVertical        控制垂直方向遇到边框是否反弹
        BOOL alwaysBounceHorizontal      控制水平方向遇到边框是否反弹
        BOOL pagingEnabled               控制控件是否整页翻动
        BOOL scrollEnabled              控制控件是否能滚动
        BOOL showsHorizontalScrollIndicator    控制是否显示水平方向的滚动条
        BOOL showsVerticalScrollIndicator     控制是否显示垂直方向的滚动条
        UIEdgeInsets scrollIndicatorInsets     指定滚动条在scrollerView中的位置
        UIScrollViewIndicatorStyleindicatorStyle    设定滚动条的样式
        float decelerationRate        改变scrollerView的减速点位置
        BOOL tracking               监控当前目标是否正在被跟踪
        BOOL dragging             监控当前目标是否正在被拖拽
        BOOL decelerating           监控当前目标是否正在减速
        BOOL delaysContentTouches     控制视图是否延时调用开始滚动的方法
        BOOL canCancelContentTouches   控制控件是否接触取消touch的事件
        float minimumZoomScale      缩小的最小比例
        float maximumZoomScale    放大的最大比例
        float zoomScale        设置变化比例
        BOOL bouncesZoom      控制缩放的时候是否会反弹
        BOOL zooming          判断控件的大小是否正在改变
        BOOL zoomBouncing      判断是否正在进行缩放反弹
        BOOL scrollsToTop      控制控件滚动到顶部
       
        这里把UIScrollView的几个要点总结下:
       
        从你的手指touch屏幕开始,scrollView开始一个timer,如果:
       
        1.  150ms内如果你的手指没有任何动作,消息就会传给subView。
       
        2.  150ms内手指有明显的滑动(一个swipe动作),scrollView就会滚动,消息不会传给subView,这里就是产生问题二的原因。
       
        3. 150ms内手指没有滑动,scrollView将消息传给subView,但是之后手指开始滑动,scrollView传送touchesCancelled消息给subView,然后开始滚动。
       
        观察下tableView的情况,你先按住一个cell,cell开始高亮,手不要放开,开始滑动,tableView开始滚动,高亮取消。
        
        delaysContentTouches的作用:
       
        这个标志默认是YES,使用上面的150ms的timer,如果设置为NO,touch事件立即传递给subView,不会有150ms的等待。
        
        cancelsTouches的作用:
       
        这个标准默认为YES,如果设置为NO,这消息一旦传递给subView,这scroll事件不会再发生。
     
    UIScrollView滚动相关属性
    contentSize              //定义内容区域大小,决定是否能够滑动
    contentOffset    //视图左上角距离坐标原点的偏移量
    scrollsToTop      //滑动到顶部(点状态条的时候)
    pagingEnabled     //是否整屏翻动
    bounces           //边界是否回弹
    scrollEnabled     //是否能够滚动
    showsHorizontalScrollIndicator //控制是否显示水平方向的滚动条
    showVerticalScrollIndicator   //控制是否显示垂直方向的滚动条
    alwaysBounceVertical     //控制垂直方向遇到边框是否反弹
    alwaysBounceHorizontal   //控制水平方向遇到边框是否反弹

    UIScrollView缩放相关属性
    minimumZoomScale  //  缩小的最小比例
    maximumZoomScale   //放大的最大比例
    zoomScale                  //设置变化比例
    zooming                      //判断是否正在进行缩放反弹
    bouncesZoom             //控制缩放的时候是否会反弹
    要实现缩放,还需要实现delegate,指定缩放的视图是谁.

    二、UIScrollView的常用代理方法

    UIScrollView滚动代理方法
    UIScrollView缩放代理方法
     
    三、UIPageControl的使用
    UIPageControl与UILabel相似
    用于指示当前第几页(代码)
    通常与UIScrollView配合使用
    currentPage //当前页
    numberOfPages   //指定页面的个数
    //UIPageControl从类名中可以看出,其父类是UIControl 。
    //所以可以像button一样添加事件,只不过事件触发使用的不是UIControlEventsTouchUpInside而是UIControlEventsValueChanged。

    四、UIPageControl与UIScrollView的结合使用
    //通常在Scrollview滚动的时候修改pageControl的currentPage
    //使用场景:
    //引导页
    //首页的轮播图等

    总结
    //contentSize决定了scrollView能否滚动,contentOffset控制内容区域的偏移量,pageEnabled控制能否整页滚动。
    //scrollView实现缩放需要指定最大缩放系数,最小缩放系数,并指定缩放的视图。
    //pageControl不单独使用,通常与scrollView结合使用。
     
  • 相关阅读:
    一次性解决window系统下,git日志乱码的问题
    多线程之线程状态,状态切换种类及代码实例
    mybatis 第一个demo,并记一次解决问题:Mapped Statements collection does not contain value for
    有100盏灯,分别写上编号1~100,同样地 有100个开关,写上编号1~100。当我按1号开关,写上1的倍数的灯会开/关(如果灯开着就关,相反地,关着就会开),当我按2号开关,写上2的倍数的灯会开/关,如此类推
    阿里云云服务器 centos 7.4 安装mysql 过程记录
    java实现树形输出
    MATLAB入门笔记
    经测试稳定可用的蓝牙链接通信Demo,记录过程中遇到的问题的思考和解决办法,并整理后给出一个Utils类可以简单调用来实现蓝牙功能
    View的相关原理(读书笔记)
    JAVA设计方法思考之如何实现一个方法执行完毕后自动执行下一个方法
  • 原文地址:https://www.cnblogs.com/LiuYisiTony/p/5129888.html
Copyright © 2011-2022 走看看