UIScrollview中心在放大时进行翻译。这是一个错误吗?

时间:2014-06-20 16:25:43

标签: ios uiscrollview zooming

我正在绘制一个图表,其中图表在放大时缩放。图表视图是scrollview的contentView。我还有一个图形轴视图放置在graphview下面(具有相同的宽度),这是一个常规的UIView,但我根据缩放比例和平移我自己管理标签在这个视图上的位置。我发现我的标签定位没有正确地与图形内容同步(缩放时)。我在缩放结束后重绘内容。

Apple文档称缩放发生在可见内容

周围

Zooming Programmatically
现在,如果可见内容与帧的大小相同,则contentView中心不应移动,但我在 - (void)scrollViewDidZoom:(UIScrollView *)scrollview 当我放大越来越多的时候,通过NSloging它在+ ve x(向右)移动的contentView中心的方法。我预计它会保持静止。这是一个错误还是我错过了什么?

PS:据我所知,如果contentView的大小小于scrollview的可见边界,则中心将向左移动(朝向原点)。

1 个答案:

答案 0 :(得分:0)

我还在apple dev论坛上发布了这个问题,我得到了正确的答案。

这是:
请记住,center是从0x X 0y派生的,而不是来自正确的边界。 在缩放时,你可以在击中另一个之前击中一个边界,因此任何对它们的引用都会在一个最大值时冻结中心。如果从左上/右上计算缩放,则无论

,您都会看到它们的中心

这意味着从左上角(0,0)重新计算中心(我也验证了这一点)。

CGPoint newCentre = CGPointMake(oldCentre.x*scale, oldCentre.y*scale);

这就是它向前漂移的原因