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];
}