大家都知道UIScrollView自带分页效果,但是他的分页效果一页的宽度却是和自身的宽度相等,这个宽度在UIScrollView里面是没有办法设置的,但是我们可以利用其他的一些属性去改变它。
众所周知UIScrollView是可以分页的,只要设置如下变量:
scrollView.pagingEnabled = YES;
默认的话,一页的尺寸就等于 scrollView.bounds.size,但对于iPad这种大屏幕来讲,经常会遇到需要一页要小于这个数值,比如我希望能同时看到3张照片,但又同时想slide的时候scrollView一次只移动一张照片的宽度 (scrollView.bounds.size.width/3),而不是一页的大小 (scrollView.bounds.size.width)。
有个很简单的方法,关键就是把scrollView的宽度設置成想要的page宽度,然後设置 clipsToBounds = NO。接着再定义scrollView 所在的 UIView 的 hitTest:
[objc]view plaincopy
- (UIView*)hitTest:(CGPoint)pointwithEvent:(UIEvent*)event {
if([selfpointInside:pointwithEvent:event]) {
return_scrollView;
}
returnnil;
}
如果 scrollView 所在的View有其他subView,可以用以下代码:
[objc]view plaincopy
- (UIView*)hitTest:(CGPoint)pointwithEvent:(UIEvent*)event {
UIView*child = [superhitTest:pointwithEvent:event];
if(child ==self) {
returnself.scrollView;
}
returnchild;
}
是不是会感叹居然有这种操作?!
顺便附上UIScrollView滚动到指定位置的方法:
[objc]view plaincopy
[mScrollViewsetContentOffset:CGPointMake(0,200)animated:YES];