iOS 只要一分钟,学会改变UIScrollView的分页宽度

大家都知道UIScrollView自带分页效果,但是他的分页效果一页的宽度却是和自身的宽度相等,这个宽度在UIScrollView里面是没有办法设置的,但是我们可以利用其他的一些属性去改变它。

众所周知UIScrollView是可以分页的,只要设置如下变量:
scrollView.pagingEnabled = YES;
效果就是Photo那种一页一页的看照片。
默认的话,一页的尺寸就等于 scrollView.bounds.size,但对于iPad这种大屏幕来讲,经常会遇到需要一页要小于这个数值,比如我希望能同时看到3张照片,但又同时想slide的时候scrollView一次只移动一张照片的宽度 (scrollView.bounds.size.width/3),而不是一页的大小 (scrollView.bounds.size.width)。

有个很简单的方法,关键就是把scrollView的宽度設置成想要的page宽度,然後设置 clipsToBounds = NO。接着再定义scrollView 所在的 UIView 的 hitTest:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {  
    if ([self pointInside:point withEvent:event]) {  
        return _scrollView;  
    }  
    return nil;  
} 

如果 scrollView 所在的View有其他subView,可以用以下代码:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {  
    UIView *child = [super hitTest:point withEvent:event];  
  
    if (child == self) {  
        return self.scrollView;  
    }  
  
    return child;  
}  

是不是会感叹居然有这种操作?!

顺便附上UIScrollView滚动到指定位置的方法:

[mScrollView setContentOffset:CGPointMake(0, 200) animated:YES];  

你可能感兴趣的:(iOS 只要一分钟,学会改变UIScrollView的分页宽度)