我在UIScrollView中有一个带有图像(地图)的UIImageView。我将另一个图像(标记)添加到图像视图(所以地图背景和标记)。如果屏幕上没有显示标记,当我放置标记时,我想滚动显示标记。
我将标记放在地图上后,我正在使用[scrollView scrollRectToVisible:rect animated:YES]
。当滚动视图未缩放时,这非常有用。如何根据缩放比例调整rect
,以便标记在视图中居中?
答案 0 :(得分:11)
我在目前正在处理的应用中做了类似的事情,但我没有使用-scrollRectToVisible
,而是使用-setContentOffset
。
因为我知道我的标记在框架中的位置,所以我可以很容易地计算它的中心,我将其保存为CGFloats centerX
和centerY
。然后我使用以下代码将标记置于屏幕中心(我从Y值中减去161,因为我的主视图有一个标签栏和一个导航控制器,所以它不是完整的480分):
CGFloat curZoom = scrollView.zoomScale;
[scrollView setContentOffset:CGPointMake((centerX*curZoom)-160, (centerY*curZoom)-161) animated:NO];
通过将中心点乘以当前的zoomScale,无论缩放级别如何,我都能找到正确的中心点。
我的标记是UIImageView的子视图,用于保存我的地图。听起来你是这样做的,所以我想这个(或类似的东西)对你有用。