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结合使用。
 

posted on 2016-01-14 13:25  Thanos_Liu  阅读(202)  评论(0编辑  收藏  举报