这个问题已经在这里有一个答案:
- 限制滚动区域的UIScrollView 4个回答
什么是设置一个UIScrollView的左/右滚动限制的最佳途径。 我本来以为这将是容易的,但我所有的尝试都没有成功。
因此,要清楚,我需要一个解决方案,让我以编程方式限制滚动程度每当我用我的应用程序的过程中需要。 这将最经常,在响应被显示在数据的变化。
谢谢,
道格
这个问题已经在这里有一个答案:
什么是设置一个UIScrollView的左/右滚动限制的最佳途径。 我本来以为这将是容易的,但我所有的尝试都没有成功。
因此,要清楚,我需要一个解决方案,让我以编程方式限制滚动程度每当我用我的应用程序的过程中需要。 这将最经常,在响应被显示在数据的变化。
谢谢,
道格
您可以控制使用滚动视图的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;
}
所有你需要做的就是改变内容的大小用下面的代码滚动视图。
[scrollView setContentSize:CGSizeMake(width, height)];
我和我把锅约束我的重载layoutSubviews方法的方法。
伪代码:
Calculate criteria for constraining pan
if (pan-constraint-is-met) {
Calculate pan-limit
[self setContentOffset:limitedContentOffset];
}