iOS MKMapView - 动画地图图钉
iOS MKMapView - Animate map Pins
iOS 中的 MKAnnotationView 动画使用 Swift 4
为图钉添加动画,以便顺利添加图钉以进行映射。
在地图上添加图钉时,它不流畅或没有动画效果。
是否有任何简单的解决方案来实现这一目标?
我用简单的代码试过了
我已经创建了一个简单的代码来解决 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 class 参考这个 link
此代码将图钉添加到具有流畅动画的地图。
iOS 中的 MKAnnotationView 动画使用 Swift 4
为图钉添加动画,以便顺利添加图钉以进行映射。 在地图上添加图钉时,它不流畅或没有动画效果。 是否有任何简单的解决方案来实现这一目标?
我用简单的代码试过了
我已经创建了一个简单的代码来解决 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 class 参考这个 link
此代码将图钉添加到具有流畅动画的地图。