2011-06-22 50 views
4

我有一个UIImageView与UIScrollView内的图像(地图)。我添加另一个图像(标记)到图像视图(所以地图背景和标记)。如果标记未显示在屏幕上,当我放置标记时,我想滚动以显示标记。当UIScrollView放大时滚动到矩形?

我在地图上放置标记之后使用了[scrollView scrollRectToVisible:rect animated:YES]。当scrollview没有放大时,这很好用。如何根据缩放比例调整rect,以便标记在视图中居中?

回答

11

我在我目前正在使用的应用程序中做了一些非常类似的事情,但我没有使用-scrollRectToVisible,而是使用-setContentOffset

因为我知道我的标记在框架中的位置,所以我可以很容易地计算出它的中心,我保存为CGFloats centerXcenterY。然后我使用下面的代码居中屏幕上的标记(I从Y值中减去161,因为我的主视图具有选项卡栏和导航控制器,所以它是不完整的480分):

CGFloat curZoom = scrollView.zoomScale; 

[scrollView setContentOffset:CGPointMake((centerX*curZoom)-160, (centerY*curZoom)-161) animated:NO]; 

通过将中心点乘以当前的zoomScale,我可以找到正确的中心点,而与缩放级别无关。

我的标记是保存我的地图的UIImageView的子视图。这听起来像是你正在以同样的方式做,所以我想这(或类似的)应该为你工作。

+0

还没有机会尝试这个,但我认为它应该工作。我会告诉你。 – jmosesman

+0

而不是在这里发表评论我已经在下面添加了一篇文章,使其更清洁。 – jmosesman