3

在 UIScrollview 中,当我滚动/拖动时,滚动视图 contentOffset 发生了变化,这表示我在滚动视图中滚动/拖动了多少。通过这种方式,我已经更新了滚动视图的子视图以进行滚动。

但是,当我缩放滚动视图(使用捏缩放)时,滚动视图的 contentOffsets 也发生了变化。我不明白 contentOffset 发生了多少变化,因为我无法将这些变化与 zoomScale 值联系起来。那么,无论如何要知道 contentOffset 的变化以进行缩放吗?

我的意图是获取缩放时拖动的 contentOffset 更改的值(由于缩放内容偏移更改,我没有得到),以便我可以相应地更新滚动视图的子视图。

我被困在这里。任何帮助将不胜感激。

谢谢

谢科特

4

1 回答 1

6

我建立了一个小型测试项目,看起来 contentOffset 乘以zoomScale. 因此,如果您想考虑这一点,只需将其除以使用zoomScale前的值即可。

也许最好用一个小例子来说明:我设置了一个滚动视图,并添加了一个足够大的视图,可以平移和缩放一点。对于那个视图,我添加了一个小的红色视图,无论如何我都希望它保持在相同的位置。我正在观察 scrollView 的 contentOffset 属性,我已经像这样实现了它:

CGPoint contentOffset = self.scrollView.contentOffset;
CGFloat zoomScale = self.scrollView.zoomScale;

self.moveView.frame = CGRectMake((contentOffset.x+10)/zoomScale,
                                 (contentOffset.y+10)/zoomScale,
                                 10,
                                 10);

这将 moveView 保持在屏幕上的相同位置,仅在用户缩放时对其进行缩放。

我希望这能澄清一点,但如果我能提供更多帮助,请告诉我。

于 2012-10-05T08:21:02.913 回答