【问题标题】:How can I let UIScrollView (pagingEnabled) to move 1.2 page each time?如何让 UIScrollView (pagingEnabled) 每次移动 1.2 页?
【发布时间】:2011-09-08 15:51:38
【问题描述】:

好的。这是故事:

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

它加载了几张图片,这些图片在一行中,这意味着 UIWebView 只会水平滚动。

现在,我将 UIWebView 内的 UIScrollView 设置为 pagingEnabled = YES。所以 UIWebView 上的滚动会逐页移动。

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

那么如果视图的框架宽度为 768,我该如何操作 UIWebView 或 UIWebView 内的 UIScrollView 以便每次滚动将移动一个 900 点的页面?

约束是:

  1. 我无法更改它的 contentSize

  2. 我无法更改它的边界或框架

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

有人愿意加入这场头脑风暴吗?

谢谢

【问题讨论】:

    标签: ipad uiwebview uiscrollview paging


    【解决方案1】:

    我认为您需要设置一个 UIScrollView 委托来跟踪触摸的开始和结束。更具体地说,我认为 scrollViewDidEndDragging:willDecelerate 是您需要使用的,因为它会在用户将手从设备上抬起的那一刻触发。

    首先,pagingEnabled=NO 似乎很明显,我们将不得不控制自己的分页。哪个,我不觉得太难。在 scrollViewDidScroll: 中跟踪滚动的方向,这样我们就有了一些全局设置: BOOL isGoingRight = YES 或 NO(NO 表示最后一次移动向左) 浮动 PAGESIZE = 900.0;

    这是我的滚动视图委托方法处理分页时的样子。

    - (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];
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      相关资源
      最近更新 更多