UIScrollView是全部滑动视图的基类spa
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];事件
scroll.background = [UIColor redColor];it
scroll.contentSize = CGSizeMake(2000, 2000); //设置UIScrollView的内容区域大小, 当UIScrollView的内容大小大于UIScrollView的Frame的大小时,UIScrollView能够滑动.io
scroll.contentOffset = CGPointMake(200, 0); //设置UIScrollView的内容偏移量.event
scroll.showHorizontalScrollIndicator = NO; //关闭水平的滑动指示条class
scroll.showVerticalScrollIndicator = NO; //关闭竖直的滑动指示条scroll
scroll.scrollEnabled = NO; //禁止UIScrollView滑动方法
scroll.pagingEnabled = YES; //容许UIScrollView整页滑动im
scroll.directionalLockEnabled = YES; //设置UIScrollView的单向滑动touch
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本身促发滚动。
一、属性delaysContentTouches,布尔类型,默认值为YES。值为YES时,UIScrollView会在接收到手势时延迟150ms来判断该手势是否可以出发UIScrollView的滑动事件;值为NO时,UIScrollView会立马将接收到的手势分发到子视图上。
二、方法- (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];
}