【问题标题】:How much contentOffset changes in UIScrollview for zooming?UIScrollview 中有多少 contentOffset 变化以进行缩放?
【发布时间】:2010-06-16 07:25:40
【问题描述】:
在 UIScrollview 中,当我滚动/拖动时,滚动视图 contentOffset 发生了变化,这表示我在滚动视图中滚动/拖动了多少。通过这种方式,我更新了scrollview的子视图进行滚动。
但是,当我缩放滚动视图(使用捏缩放)时,滚动视图的 contentOffsets 也发生了变化。我不明白 contentOffset 发生了多少变化,因为我无法将这些变化与 zoomScale 值联系起来。那么,无论如何要知道 contentOffset 的变化以进行缩放吗?
我的意图是在缩放时获取 contentOffset 更改的值以进行拖动(由于缩放内容偏移更改,我没有得到),以便我可以相应地更新滚动视图的子视图。
我被困在这里了。任何帮助将不胜感激。
谢谢
谢科特
【问题讨论】:
标签:
iphone
uiscrollview
uiscrollviewdelegate
【解决方案1】:
我设置了一个小测试项目,看起来 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 在屏幕上保持相同的位置,仅在用户缩放时缩放它。
我希望这能让事情有所澄清,但如果我能提供更多帮助,请告诉我。