限制UIScrollView可滚动区域

时间:2012-05-22 10:33:13

标签: iphone cocoa-touch uikit

我正在使用UIScrollView来显示一个大文档,我想限制用户可以以某种方式查看的区域。我用以下代码几乎达到了预期的结果:

[childView setFrame:CGRectMake(offsetX, offsetY, contentWidth, contentHeight)];
[scrollView setContentSize:CGSizeMake(contentWidth, contentHeight)];

offsetXoffsetY为负数,可将子视图移动到滚动视图区域之外。这适用于缩放级别1.0,但不适用于任何其他缩放级别。我已经像这样实施了- (void)setZoomScale:(float)zoomScale

- (void)setZoomScale:(float)zoomScale {
    [super setZoomScale:zoomScale];
    [childView setFrame:CGRectMake(offsetX * zoomScale, offsetY * zoomScale, contentWidth, contentHeight)];
}

但是这不起作用,视图缩放越多,偏移量就越大。实现这一目标的最佳方法是什么?

谢谢, Ĵ

1 个答案:

答案 0 :(得分:1)

显然,您可以将最小和最大缩放比例设置为1。

但是,如果我在scrollViewDidZoom中设置contentSize,它对我有用:

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    [scrollView setContentSize:CGSizeMake(1024*scrollView.zoomScale, 1024*scrollView.zoomScale)];
}

顺便说一下,请确保关闭弹跳以准确检查:

scrollView.bounces = NO;