Iphone 具有多个缩放级别的UIScrollView?

Iphone 具有多个缩放级别的UIScrollView?,iphone,uiscrollview,zooming,scale,Iphone,Uiscrollview,Zooming,Scale,是否有一种方法可以控制UIScrollView的哪些子视图被缩放,哪些不被缩放 例如,我有一个地图作为底层(不是MapKit,只是一个平面图像),可以缩放和平移。根据用户的选择,在地图上放置标记以指示特定的建筑物/地点等。这些标记也是UIImageView,使用地图图像的像素坐标(eq Building X位于(934842),标记放置在此处)。缩小但这些标记有点难以看到,因为它们也会缩放到与地图相同的级别 那么,有没有一种方法可以告诉UIScrollView不要缩放标记图像,但仍然允许它在地图

是否有一种方法可以控制UIScrollView的哪些子视图被缩放,哪些不被缩放

例如,我有一个地图作为底层(不是MapKit,只是一个平面图像),可以缩放和平移。根据用户的选择,在地图上放置标记以指示特定的建筑物/地点等。这些标记也是UIImageView,使用地图图像的像素坐标(eq Building X位于(934842),标记放置在此处)。缩小但这些标记有点难以看到,因为它们也会缩放到与地图相同的级别


那么,有没有一种方法可以告诉UIScrollView不要缩放标记图像,但仍然允许它在地图图像缩放时平移/重新定位它们?

我认为您可能正在寻找的方法是
UIScrollViewDelegate

-(UIView*)视图用于缩放CrollView:(UICrollView*)滚动视图

这允许您返回要应用缩放的视图,在您的情况下,这将是背景贴图图像

如果不希望同时缩放标记,则需要直接将标记添加为
UIScrollView
的子视图,而不是将其添加为背景地图
UIImageView
的子视图

正如您所提到的,标记相对于地图背景
UIImageView
,这意味着如果您将标记添加到
UIScrollView
,则一旦更改滚动,它们将不会放置在地图上的相同位置

要解决此问题,需要计算相对于
UIScrollView
的等效坐标

虽然这看起来相当令人望而生畏,但一旦您了解了缩放因子,这实际上是非常微不足道的

要获取缩放因子,请使用
UIScrollViewDelegate
方法

- (void)scrollViewDidZoom:(UIScrollView *)scrollView
然后,您可以通过调用以下命令获得缩放因子:

scrollView.zoomScale
并通过将此
zoomScale
应用于原始值来重新计算标记坐标,并相应地重新定位标记

参考:


希望这能有所帮助:)

当你这么说的时候,我几乎有点生气,我自己也没有意识到这一点。谢谢堆,我会尝试一下,看看是否能让它们正确定位。附言:我会投票支持你的答案,但我还没有代表这么做:PNo担心:)希望你能成功!如果您这样做,您可以接受答案,而不是投票表决;)是的,我理解获得正确比例坐标的数学,但我如何在地图移动时强制它们重新定位?某种类型的onZoom->moveMarkers函数。是的,基本上,在scrollViewDidZoom中调用moveMarkers方法。例如,这将在scrollview停止缩放时重新定位所有标记