确定。这是故事:
我有一个全屏的UIWebView,宽度= 768
它加载了几个图像,这些图像在一行中,这意味着UIWebView只能水平滚动。
现在,我将UIWebView中的UIScrollView设置为pagingEnabled = YES。因此,UIWebView上的滚动将逐页移动。
问题是每个图像的宽度大约为900.我不会缩小它们。如果我滚动UIWebView,从第2页开始,将始终显示前一个图像的132个点。这对我不好。
那么我如何在UIWebView中操作UIWebView或UIScrollView,以便每个卷轴移动900页的页面,如果视图的框架宽度是768?
约束是:
我无法更改其contentSize
我无法更改其界限或框架
我说这些约束,因为UIWebView在加载内容时会根据自己的目的更改它们。
有人想加入这个大脑风暴吗?
由于
答案 0 :(得分:1)
我认为你需要设置一个UIScrollView委托来跟踪开始和结束的触摸。更具体地说,scrollViewDidEndDragging:willDecelerate是我认为你需要使用的,因为它会在用户从设备上抬起手的瞬间触发。
首先,pagingEnabled = NO似乎很明显,我们将不得不控制自己的分页。其中,我觉得不是太难了。跟踪scrollViewDidScroll:中滚动的方向,以便我们有一些全局集: BOOL isGoingRight = YES或NO(NO表示最后一次移动在左边) float PAGESIZE = 900.0;
这是我的scrollview委托方法看起来像处理分页的方式。
- (void) scrollViewDidEndDragging:(UIScrollView*)_scrollView willDecelerate:(BOOL)willDecelerate {
float offsetProportion = _scrollView.contentOffset.x/_scrollView.frame.size.width;
//depending upon our direction, round up or down
int page = isGoingRight? ceilf(offsetProportion): floorf(offsetProportion);
//manually finish the scroll
[_scrollView scrollRectToVisible:CGRectMake(page*PAGESIZE, 0, _scrollView.frame.size.width, _scrollView.frame.size.height) animated:YES];
}
我没有对此进行测试,您可能需要也可能不需要在点上禁用触摸。