自定义UIScrollView的分页宽度

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

你可能感兴趣的:(自定义UIScrollView的分页宽度)