如何让UIScrollView(pagingEnabled)每次移动1.2页?

时间:2011-09-08 15:51:38

标签: ipad uiwebview uiscrollview paging

确定。这是故事:

我有一个全屏的UIWebView,宽度= 768

它加载了几个图像,这些图像在一行中,这意味着UIWebView只能水平滚动。

现在,我将UIWebView中的UIScrollView设置为pagingEnabled = YES。因此,UIWebView上的滚动将逐页移动。

问题是每个图像的宽度大约为900.我不会缩小它们。如果我滚动UIWebView,从第2页开始,将始终显示前一个图像的132个点。这对我不好。

那么我如何在UIWebView中操作UIWebView或UIScrollView,以便每个卷轴移动900页的页面,如果视图的框架宽度是768?

约束是:

  1. 我无法更改其contentSize

  2. 我无法更改其界限或框架

  3. 我说这些约束,因为UIWebView在加载内容时会根据自己的目的更改它们。

    有人想加入这个大脑风暴吗?

    由于

1 个答案:

答案 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];
}

我没有对此进行测试,您可能需要也可能不需要在点上禁用触摸。