Pregunta

Estoy escribiendo una aplicación de dibujo que muestra un controlador de vista de herramientas cuando el usuario hace clic en un elemento en una barra de herramientas. Sin embargo, varios de mis beta testers han informado que el paladar de herramientas se abre muy lentamente. Estoy usando el presente presentModalViewController: animado: llame para mostrar las herramientas, y he intentado envolverlo en un bloque de código como este para acelerarlo:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 0.1];
[self presentModalViewController:settings animated:YES];
[UIView commitAnimations];

Desafortunadamente, eso no funciona. Si dice animado: NO, funciona mejor, pero la vista del lienzo de dibujo subyacente se elimina inmediatamente (ya que el controlador cree que ya no es visible), por lo que la animación se produce sobre un fondo blanco.

¿Alguien ha hecho esto antes que estaría dispuesto a ofrecer algún consejo? ¡Te lo agradecería!

¿Fue útil?

Solución

Se hace una pregunta similar aquí .

También puedes cambiar la velocidad usando esta técnica, pero en mi experimentación, lo hace sobre un fondo en blanco, como has sugerido.

Otros consejos

Editado: se agregó otra opción con la contención del controlador para iOS 5 y posterior.

Otra solución es establecer el espacio de tiempo de la capa.

Esto se hace a través de la propiedad de velocidad de CALayer. Para ralentizar la animación, se podría usar:

MytransparentVCViewController *vc = [[MytransparentVCViewController alloc] initWithNibName:@"MytransparentVCViewController" bundle:nil];
// Makes all animations 10 times slower
// To speed it up, set it to multiples of 1: 2 is 2 times faster, 3 is 3 times faster etc
vc.view.layer.speed = 0.1; 
[self presentModalViewController:vc animated:YES];

Tenga en cuenta que la solución propuesta en la publicación vinculada no funcionará si su objetivo es cambiar la velocidad de animación del controlador de vista modal que está a punto de presentar (por ejemplo, si usa UIModalTransitionStyleCoverVertical).

La velocidad de la capa no es un valor absoluto sino una función del espacio de tiempo primario de esa capa (a menos que la capa esté en la raíz de la jerarquía de capas, por supuesto). Por ejemplo, cuando establece la velocidad de una capa en 2, sus animaciones se ejecutarán el doble de rápido en comparación con las animaciones de los padres de esa capa.

Otra opción más es utilizar la contención del controlador de vista. (solo iOS 5 y versiones posteriores)

http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW81 .

Usted tiene control total sobre la animación con la transición UIViewControllerFromViewController: toViewController: duración: opciones: animaciones: finalización :.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top