UIScrollview 在缩放时同步子视图原点

Posted

技术标签:

【中文标题】UIScrollview 在缩放时同步子视图原点【英文标题】:UIScrollview sync a subview origin while zooming 【发布时间】:2013-02-26 20:30:11 【问题描述】:

我正在尝试开发一种自定义地图。

所以我有一个启用缩放的滚动视图。

这个滚动视图有一个 UIImageView 作为它的子视图,代表用户的地图。

我希望用户能够像在 MapKit 中一样“放置图钉”。

如果我将 pin imageView 添加到地图 imageview 中,pin image 将根据 scrollview 缩放进行缩放,这不是我想要的。

我想获得与 MapKit Mapview 中相同的结果。

当用户平移或缩放时,图钉应该四处移动,但其图像不应变小或变大。

有一种简单的方法可以做到这一点,而不会因为对缩放比例和内容偏移量的数学推测而发疯?

非常感谢大家。

【问题讨论】:

【参考方案1】:

这更像是一种猜测,但是将 pin 的层添加为图像视图的子层似乎是这样做的方法。

【讨论】:

它现在就是这样工作的。图像未调整大小,但不会根据平移和缩放移动。但是感谢您的尝试【参考方案2】:

我做到了。

我所要做的就是将图钉添加到地图图像视图中。

在滚动视图委托之后,我根据滚动视图缩放比例调整了引脚比例,如下所示:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
    _redPin.transform = CGAffineTransformMakeScale(1 / scrollView.zoomScale, 1 / scrollView.zoomScale);

【讨论】:

以上是关于UIScrollview 在缩放时同步子视图原点的主要内容,如果未能解决你的问题,请参考以下文章

滚动视图、缩放和缩放原点混淆

为捏合手势设置 UIScrollView 的原点

UIScrollView 直到缩放用户操作后才平移

UIScrollView 在不正确的点上缩放

UIScrollView 子视图不会调整大小

在 UIScrollView 上禁用手动缩放