8

对 UIScrollView 的左/右滚动设置限制的最佳方法是什么。我原以为这很容易,但我所有的尝试都没有成功。

因此,需要明确的是,我需要一个解决方案,让我可以在使用我的应用程序期间随时以编程方式限制滚动范围。这通常是为了响应正在显示的数据的变化。

谢谢,
道格

4

3 回答 3

11

您可以使用滚动视图的 contentSize 属性来控制内容的大小。如果这对您来说还不够(例如,您需要将滚动区域限制在内容中间的某个任意区域),您可以强制 contentOffset 在滚动视图的委托方法中处于所需的限制范围内。

基本上代码可能如下所示:

- (void) scrollViewDidScroll:(UIScrollView*)scroll{
    CGPoint offset = scroll.contentOffset;

    // Check if current offset is within limit and adjust if it is not
    if (offset.x < minOffsetX) offset.x = minOffsetX;
    if (offset.y < minOffsetY) offset.y = minOffsetY;
    if (offset.x > maxOffsetX) offset.x = maxOffsetX;
    if (offset.y > maxOffsetY) offset.y = maxOffsetY;

    // Set offset to adjusted value
    scroll.contentOffset = offset;
}
于 2012-06-05T22:51:52.057 回答
7

您需要做的就是使用以下代码更改滚动视图的内容大小。

[scrollView setContentSize:CGSizeMake(width, height)];

于 2012-06-05T22:39:53.653 回答
-5

我采用了在重载的 layoutSubviews 方法中放置平移约束的方法。

伪代码:

Calculate criteria for constraining pan
if (pan-constraint-is-met) {

    Calculate pan-limit
    [self setContentOffset:limitedContentOffset];

}
于 2012-06-07T14:14:43.323 回答