大家都知道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];