zoukankan      html  css  js  c++  java
  • 转载--iOS,UIScrollView的相关属性,方法

    http://blog.sina.com.cn/s/blog_45e2b66c01019wfg.html

    UIScrollView 快速滑动过程中,滚动速度过快,可以通过属性decelerationRate控制。

     

    decelerationRate范围为0-----1,一般0---0.5没有多少区别。0也没有问题。

    decelerationrate 设置当它减速时的速度,0.1f的话,很快就停下来,1就正常速度停下,即滑动一定距离才停.
    下面附属UIScrollView属性:
    转自  http://blog.csdn.net/aaajj/article/details/6872038
     
    在滚动过程当中,其实是在修改原点坐标

    当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器,假如在计时器到点后,没有发生手指移动事件,那么,scroll view发送tracking events到被点击的subview
    假如在计时器到点前,发生了移动事件,那么 scroll view 取消tracking自己发生滚动

    子类可以重载touchesShouldBegin:withEvent:inContentView: 决定自己是否接收touch事件
    pagingEnabled当值是YES,会自动滚动到subview的边界,默认是NO
    touchesShouldCancelInContentView: 开始发送tracking messages消息给subview的时候
    调用这个方法,决定是否发送tracking messages消息到subview,假如返回NO,发送,YES则不发送
    假如 canCancelContentTouches属性是NO,则不调用这个方法
    来影响如何处理滚动手势

    scroll view还处理缩放和平移手势

    要实现缩放和平移,必须实现委托viewForZoomingInScrollView:

    scrollViewDidEndZooming:withView:atScale:

    两个方法,另外 maximumZoomScale和minimumZoomScale两个属性要不一样 

    几个属性
    tracking  当touch后还没有拖动的时候,值是YES,否则NO

    zoomBouncing  当内容放大到最大或者最小的时候,值是YES,否则NO

    zooming  当正在缩放的时候,值是YES,否则NO

    decelerating  当滚动后,手指放开,但是还在继续滚动中,这个时候是 YES,其他是NO

    decelerationRate  设置手指放开后的减速率

    maximumZoomScale  一个浮点数,表示能放最大的倍数

    minimumZoomScale   一个浮点数,表示能缩最小的倍数

    pagingEnabled  当值是YES,会自动滚动到subview的边界,默认是NO

    scrollEnabled  决定是否可以滚动

    delaysContentTouches

    是个布尔值,当值是YES的时候,用户触碰开始,scroll view要延迟一会,看看是否用户有意图滚动,假如滚动了,那么捕捉touch-down事件,否则就不捕捉, 假如值是NO,当用户触碰, scroll view会立即触发touchesShouldBegin:withEvent:inContentView:, 默认是YES

    canCancelContentTouches
    当值是YES的时候,用户触碰后,然后在一定时间内没有移动,scrollView发送tracking events,然后用户移动手指足够长度触发滚动事件,这个时候,scrollView发送了touchesCancelled:withEvent: 到subview,然后scroView开始滚动
    假如值是NO,scrollView发送tracking events后,就算用户移动手指,scrollView也不会滚动
     
    contentSize 里面内容的大小,也就是可以滚动的大小,默认是0,没有滚动效果。
     
    showsHorizontalScrollIndicator 滚动时,是否显示水平滚动条
     
    showsVerticalScrollIndicator 滚动时,是否显示垂直滚动条
     
    bounces  默认是yes,就是滚动超过边界,会反弹有反弹回来的效果,假如是 NO,那么滚动到达边界,那么会连忙停止
     
    bouncesZoom  和bounces类似,区别在于,这个效果反映在缩放上面,假如缩放超过最大缩放,那么会反弹效果,假如是NO,则到达最大或者最小的时候,立即停止
     
    directionalLockEnabled  默认是NO, 可以在垂直和水平方向同时运动, 当值是YES, 假如一开始是垂直或者是水平运动,那么接下来会锁定另外一个方向的滚动, 假如一开始是对角方向滚动,则不会禁止某个方向
     
    indicatorStyle  滚动条的样式,基本只是设置颜色,总共3个颜色,默认,黑色的,白色的
     
    scrollIndicatorInsets  设置滚动条的位置
     
     
     
     
    / *******************************/

    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中的位置
    UIScrollViewIndicatorStyle   indicatorStyle- 设定滚动条的样式
    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事件不会再发生。

    UIScrollViewDelegate  协议

    //scrollView滚动时,就调用该方法。任何offset值改变都调用该方法。即滚动过程中,调用多次

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView{

        // 从中可以读取contentOffset属性以确定其滚动到的位置。

        // 注意:当ContentSize属性小于Frame时,将不会出发滚动

      

    }

    // 当开始滚动视图时,执行该方法。一次有效滑动(开始滑动,滑动一小段距离,只要手指不松开,只算一次滑动),只执行一次。

    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{}

    // 滑动scrollView,并且手指离开时执行。一次有效滑动,只执行一次。

    // 当pagingEnabled属性为YES时,不调用,该方法

    - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{}

    // 滑动视图,当手指离开屏幕那一霎那,调用该方法。一次有效滑动,只执行一次。

    // decelerate,指代,当我们手指离开那一瞬后,视图是否还将继续向前滚动(一段距离),经过测试,decelerate=YES

    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{}

    // 滑动减速时调用该方法。

    - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{}

    // 滚动视图减速完成,滚动将停止时,调用该方法。一次有效滑动,只执行一次。

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{}

    // 当滚动视图动画完成后,调用该方法,如果没有动画,那么该方法将不被调用

    - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{}

    // 返回将要缩放的UIView对象。要执行多次

    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{}

    // 当scrollView缩放时,调用该方法。在缩放过程中,回多次调用

    - (void)scrollViewDidZoom:(UIScrollView *)scrollView{}

    // 当将要开始缩放时,执行该方法。一次有效缩放,就只执行一次。

    - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{}

    // 当缩放结束后,并且缩放大小回到minimumZoomScale与maximumZoomScale之间后(我们也许会超出缩放范围),调用该方法。

    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{}

    // 指示当用户点击状态栏后,滚动视图是否能够滚动到顶部。需要设置滚动视图的属性:_scrollView.scrollsToTop=YES;

    - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{}

    // 当滚动视图滚动到最顶端后,执行该方法

    - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{

    }

    本文出自 “圣殿骑士团的iOS” 博客,请务必保留此出处http://10646127.blog.51cto.com/10636127/1690221

     
     
     
  • 相关阅读:
    start tag, end tag issues in IE7, particularly in xslt transformation
    用SandCastle为注释生成chm文档
    Firebug
    架构的重点
    Linux Shell常用技巧(十) 管道组合
    Linux JDK升级
    Linux Shell常用技巧(十二) Shell编程
    Packet Tracer 5.0实验(一) 交换机的基本配置与管理
    Linux Shell常用技巧(六) sort uniq tar split
    Linux Shell常用技巧(二) grep
  • 原文地址:https://www.cnblogs.com/kkkore/p/5866255.html
Copyright © 2011-2022 走看看