Iphone 具有多个缩放级别的UIScrollView?
是否有一种方法可以控制UIScrollView的哪些子视图被缩放,哪些不被缩放 例如,我有一个地图作为底层(不是MapKit,只是一个平面图像),可以缩放和平移。根据用户的选择,在地图上放置标记以指示特定的建筑物/地点等。这些标记也是UIImageView,使用地图图像的像素坐标(eq Building X位于(934842),标记放置在此处)。缩小但这些标记有点难以看到,因为它们也会缩放到与地图相同的级别Iphone 具有多个缩放级别的UIScrollView?,iphone,uiscrollview,zooming,scale,Iphone,Uiscrollview,Zooming,Scale,是否有一种方法可以控制UIScrollView的哪些子视图被缩放,哪些不被缩放 例如,我有一个地图作为底层(不是MapKit,只是一个平面图像),可以缩放和平移。根据用户的选择,在地图上放置标记以指示特定的建筑物/地点等。这些标记也是UIImageView,使用地图图像的像素坐标(eq Building X位于(934842),标记放置在此处)。缩小但这些标记有点难以看到,因为它们也会缩放到与地图相同的级别 那么,有没有一种方法可以告诉UIScrollView不要缩放标记图像,但仍然允许它在地图
那么,有没有一种方法可以告诉UIScrollView不要缩放标记图像,但仍然允许它在地图图像缩放时平移/重新定位它们?我认为您可能正在寻找的方法是
UIScrollViewDelegate
-(UIView*)视图用于缩放CrollView:(UICrollView*)滚动视图
这允许您返回要应用缩放的视图,在您的情况下,这将是背景贴图图像
如果不希望同时缩放标记,则需要直接将标记添加为UIScrollView
的子视图,而不是将其添加为背景地图UIImageView
的子视图
正如您所提到的,标记相对于地图背景UIImageView
,这意味着如果您将标记添加到UIScrollView
,则一旦更改滚动,它们将不会放置在地图上的相同位置
要解决此问题,需要计算相对于UIScrollView
的等效坐标
虽然这看起来相当令人望而生畏,但一旦您了解了缩放因子,这实际上是非常微不足道的
要获取缩放因子,请使用UIScrollViewDelegate
方法
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
然后,您可以通过调用以下命令获得缩放因子:
scrollView.zoomScale
并通过将此zoomScale
应用于原始值来重新计算标记坐标,并相应地重新定位标记
参考:
希望这能有所帮助:)当你这么说的时候,我几乎有点生气,我自己也没有意识到这一点。谢谢堆,我会尝试一下,看看是否能让它们正确定位。附言:我会投票支持你的答案,但我还没有代表这么做:PNo担心:)希望你能成功!如果您这样做,您可以接受答案,而不是投票表决;)是的,我理解获得正确比例坐标的数学,但我如何在地图移动时强制它们重新定位?某种类型的onZoom->moveMarkers函数。是的,基本上,在scrollViewDidZoom中调用moveMarkers方法。例如,这将在scrollview停止缩放时重新定位所有标记