UIScrollView

UIScrollView是所有滑动视图的基类

UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];

scroll.background = [UIColor redColor];

 scroll.contentSize = CGSizeMake(2000, 2000);  //设置UIScrollView的内容区域大小, 当UIScrollView的内容大小大于UIScrollView的Frame的大小时,UIScrollView可以滑动.

scroll.contentOffset = CGPointMake(200, 0); //设置UIScrollView的内容偏移量.

scroll.showHorizontalScrollIndicator = NO; //关闭水平的滑动指示条

scroll.showVerticalScrollIndicator = NO; //关闭竖直的滑动指示条

scroll.scrollEnabled = NO; //禁止UIScrollView滑动

scroll.pagingEnabled = YES;  //允许UIScrollView整页滑动

scroll.directionalLockEnabled = YES;  //设置UIScrollView的单向滑动

scroll.bounces  = NO;  //禁止UIScrollView的边界反弹效果.

scroll.alwaysBounceHorizontal = YES;  //即使内容的size大小小于ScrollView的frame的大小, 依然具有边界反弹效果.

scroll.alwaysBounceVertical = YES;

scroll.scrolsToTop = NO;  //禁止点击状态条滑动到顶部.

scroll.maximumZoomScale = 4.0;  //设置UIScrollView的缩放最大最小值

scroll.minimumZoomScale = 0.5;

 

拓展

UIScrollView:

 视图的滚动过程,其实是在不断修改原点坐标。当手指触摸后,ScrollView会暂时拦截触摸事件,使用一个计时器。假如在计时器到点后没有发生手指移动事件,那么ScrollView发送tracking events到被点击的subView;若是在计时器到点后发生了移动事件,那么ScrollView取消tracking自己促发滚动。
1、属性delaysContentTouches,布尔类型,默认值为YES。值为YES时,UIScrollView会在接收到手势时延迟150ms来判断该手势是否能够出发UIScrollView的滑动事件;值为NO时,UIScrollView会立马将接收到的手势分发到子视图上。

2、方法- (BOOL)touchesShouldCancelInContentView:(UIView *)view,此方法的重载是帮助我们完美解决问题的重点,决定手势是否取消传递到view上,拖动ScrollView时触发。返回NO时,拖动手势将留在ScrollView上,返回YES则将手势传到view上。(若view是UIControl,则默认返回YES)   可这样重载:

- (BOOL)touchesShouldCancelInContentView:(UIView *)view {

    if ([view isKindOfClass:[UIButton class]]) {

        return YES;

    }

    return [super touchesShouldCancelInContentView:view];

}

 

posted @ 2016-01-02 20:09  侯文超  阅读(197)  评论(0编辑  收藏  举报