¿sabe usted que MKPinAnnotationView tiene un método "animatesDrop" para animar una anotación de pin desde la parte superior a un punto en el mapa con una sombra? OK, ¿es posible hacer esto con una imagen personalizada?¿Es posible llamar a animatesDrop en MKAnnotationView en lugar de MKPinAnnotationView?
8
A
Respuesta
20
Siempre puede hacer su animación personalizada en el método MKMapViewDelegate.
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
Probablemente algo así (no obtendrá la animación sombra de fantasía, si quieres que necesita para hacerlo usted mismo):
- (void) mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
CGRect visibleRect = [mapView annotationVisibleRect];
for (MKAnnotationView *view in views) {
CGRect endFrame = view.frame;
CGRect startFrame = endFrame; startFrame.origin.y = visibleRect.origin.y - startFrame.size.height;
view.frame = startFrame;
[UIView beginAnimations:@"drop" context:NULL];
[UIView setAnimationDuration:1];
view.frame = endFrame;
[UIView commitAnimations];
}
}
1
Gracias @gcamp por su respuesta, funciona bien, pero puedo modificar un poco para ser exacta para dónde se colocará la vista en MAPview, compruebe el código de abajo:
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
CGRect visibleRect = [mapView annotationVisibleRect];
for (MKAnnotationView *view in views)
{
CGRect endFrame = view.frame;
endFrame.origin.y -= 15.0f;
endFrame.origin.x += 8.0f;
CGRect startFrame = endFrame;
startFrame.origin.y = visibleRect.origin.y - startFrame.size.height;
view.frame = startFrame;
[UIView beginAnimations:@"drop" context:NULL];
[UIView setAnimationDuration:0.2];
view.frame = endFrame;
[UIView commitAnimations];
}
}
3
la misma respuesta que @gcamp sólo en Swift para los interesados
func mapView(mapView: MKMapView, didAddAnnotationViews views: [MKAnnotationView]) {
let visibleRect = mapView.annotationVisibleRect
for view:MKAnnotationView in views{
let endFrame:CGRect = view.frame
var startFrame:CGRect = endFrame
startFrame.origin.y = visibleRect.origin.y - startFrame.size.height
view.frame = startFrame;
UIView.beginAnimations("drop", context: nil)
UIView.setAnimationDuration(1)
view.frame = endFrame;
UIView.commitAnimations()
}
}
Cuestiones relacionadas
- 1. Subclases de MKAnnotationView
- 2. MKPinAnnotationView offset de imagen?
- 3. ASP.NET: ¿Es posible llamar a la tarea asincrónica en Global.asax?
- 4. ¿Cómo puedo animar MKAnnotationView drop?
- 5. no MKAnnotationView a aparecer en el mapa
- 6. ¿Cómo abrir invocar MKAnnotationView programmatically? (iPhone, MapKit)
- 7. ¿Es posible llamar a un módulo de Python desde ObjC?
- 8. ¿Es posible llamar a script ejecutable Thor-powered sin llamar a thor?
- 9. ¿Es posible modificar líneas en un archivo en el lugar?
- 10. ¿Es posible llamar a un servicio web con Indesign javascript?
- 11. Subclase MKAnnotationView
- 12. subclases MKAnnotationView y setDragState primordial
- 13. Detectar Tap en CalloutBubble en MKAnnotationView
- 14. ¿Cómo ocultar MKAnnotationView Callout?
- 15. ¿Por qué es posible enumerar una consulta DbLinq después de llamar a Dispose() en el DataContext?
- 16. ¿Es posible llamar a una función que no está en la ruta en MATLAB?
- 17. ¿Es posible mantener DLL en memoria después de llamar a salidas de proceso?
- 18. ¿Es posible llamar a una función de extensión de Java desde Xalan en Android?
- 19. ¿Es posible llamar a los métodos de las subclases en un objeto de superclase?
- 20. ¿Es posible llamar a un método de Javascript en el contexto de otra ventana?
- 21. IOS: Agregar imagen a MKAnnotationview personalizada
- 22. Cómo configurar el centro de rotación de un MKAnnotationView
- 23. ¿Puedo llamar a una función definida en una clase parcial de otra clase parcial? ¿Es posible?
- 24. ¿Es posible desde Spring inyectar el resultado de llamar a un método en un ref bean?
- 25. ¿Es posible llamar a un método de espera en un método no asíncrono?
- 26. ¿Es posible crear un archivo en algún lugar de github a través del navegador?
- 27. Llamar a una función const en lugar de a su versión no const
- 28. ¿Cómo utilizar MKAnnotationView sin MKMapView?
- 29. ¿Es posible llamar a un procedimiento almacenado utilizando LINQ en LINQPad?
- 30. ¿Es posible llamar a una función C++ desde JavaScript en un QWebView?
@gcamp: He tratar también de esta manera, pero no funciona (la imagen no cambia): MKPinAnnotationView * annView = [MAPview dequeueReusableAnnotationViewWithIdentifier: Ident]; annView = [[[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: ident] autorelease]; annView.image = [UIImage imageNamed: @ "annotImg.png"]; annView.animatesDrop = TRUE; – Mat
¡Cambié mi respuesta! – gcamp
muchas gracias! .. esto es muy útil para mí! – Mat