我尝试在上面放大MKAnnotation的视图
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)
正如你在动画中看到的那样,问题在于不仅是MKAnnotation的Pin部分,而且Callout是缩放的 - 任何人都知道如何解决这个问题?
我使用以下代码进行缩放动画(它是UIView的扩展)
func scaleUp(duration: TimeInterval = 0.2) {
self.transform = CGAffineTransform.identity
UIView.animate(withDuration: duration, delay: 0.0, options: [.curveLinear], animations: { () -> Void in
self.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
}) { (animationCompleted: Bool) -> Void in }
}
答案 0 :(得分:1)
这是因为标注视图是MKAnnotationView
的子视图。不幸的是,您无法访问标注视图,因此无法应对这种转换-可以在层次结构中找到标注视图,但它无法按需工作。
但是您可以从相反的方向进行操作:
以较低的比例开始 (这将作为默认尺寸),假设0.5
,然后将其放大至{{1 }} (目前,您已选择具有标准尺寸标注视图的图钉)。
您需要做的是为默认值选择适当大小的图像(在这种情况下,默认图像大小必须更大)。
MapKit框架在内部更改转换矩阵以用于翻译目的(引脚正从群集移入/移出群集)。这有一个副作用,它将转换矩阵中的1.0
和a
更改为d
,这意味着它将重置您先前设置的比例。要解决此问题,请像这样在注释视图中覆盖转换:
1.0