1

MKAnnotationView animation in iOS using Swift 4

Add animation to pins for adding pins to map smoothly. While adding pins to map, it is not smooth or it has no animation effect. Is there any simple solution to achieve this?

Pramod More
  • 1,220
  • 2
  • 22
  • 51
  • Personally, I think the best solution is to encapsulate this animation logic in a `MKAnnotationView` type, not bury it in the map view delegate. E.g., https://stackoverflow.com/a/64467176/1271826. The annotation view should do the animation. – Rob Jun 30 '23 at 20:19

1 Answers1

1

I tried it with the simple code

enter image description here

I have created a simple code to fix this issue in swift 4.

Here is my code,

Override your viewForAnnotaion method something like this

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
}

For AnimationUtility class refer this link

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

This code adds pins to map with smooth animation.

Pramod More
  • 1,220
  • 2
  • 22
  • 51