iOS MKMapView - 动画地图别针

时间:2018-03-28 14:42:00

标签: ios mkmapview uiviewanimation mkannotationview mkpointannotation

使用Swift 4的iOS中的MKAnnotationView动画

为引脚添加动画,以便添加引脚以顺畅地映射。 添加引脚进行映射时,它不是平滑的,也没有动画效果。 有没有简单的解决方案来实现这个目标?

1 个答案:

答案 0 :(得分:0)

我用简单的代码

试了一下

enter image description here

我已经在swift 4中创建了一个简单的代码来解决这个问题。

这是我的代码,

覆盖你的viewForAnnotaion方法,就像这样

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {

    var annotationView = self.mapView.dequeueReusableAnnotationView(withIdentifier: "Pin")

    if annotationView == nil{
        annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "Pin")
    }else{
        annotationView?.annotation = annotation
    }

    annotationView?.canShowCallout = false

    guard !annotation.isKind(of: MKUserLocation.self) else {
        //for the custom image on current location
            annotationView?.image = #imageLiteral(resourceName: "currentLocationPin")
            return annotationView
    }

 annotationView.image = UIImage(named: "pinGreen")

    let scaleTransform = CGAffineTransform(scaleX: 0.0, y: 0.0)  // Scale
    UIView.animate(withDuration: 0.2, animations: {
        annotationView?.transform = scaleTransform
        annotationView?.layoutIfNeeded()
    }) { (isCompleted) in

        // Nested block of animation
        UIView.animate(withDuration: 0.3, animations: {
            annotationView?.alpha = 1.0
            annotationView?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
            AnimationUtility.viewSlideInFromBottom(toTop: annotationView!)
            annotationView?.layoutIfNeeded()
        })
    }

    return annotationView
}

对于AnimationUtility类,请参阅此链接

https://stackoverflow.com/a/49398148/8334818

此代码添加引脚以使用流畅的动画进行映射。