Pregunta

Estoy desarrollando mi primera aplicación para iPhone, y he superado la " maquinaria " y ahora estoy terminando fit & amp; detalles de acabado.

Tengo una vista que se desliza desde la parte inferior de la pantalla para mi panel de configuración. La vista en sí tiene una opacidad de 0, y tiene una vista UIImageView dentro de ella con un PNG que crea el fondo real para la vista, detrás de los controles. Estoy usando las llamadas de animación incorporadas para UIView, como en;

[self.view addSubview:settingsViewController.view];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

frame.origin.y = 200.0;
settingsViewController.view.frame = frame;

[UIView commitAnimations];

Lamentablemente, la animación en el dispositivo es entrecortada. El PNG que estoy usando como fondo es transparente solo en los 30 píxeles más altos en todo su ancho. Si utilizo un PNG sin transparencia, la animación es suave.

La aplicación en sí es altamente gráfica, por lo que la vista se está animando en la parte superior de una pantalla llena de otros PNG.

Me sorprendería mucho si el dispositivo no pudiera manejar este tipo de animación sin problemas, lo que me lleva a creer que necesito refinar mi enfoque. Los pensamientos que tenía hasta ahora incluyen;

¿Quizás necesito usar Core Animation directamente? ¿El almacenamiento en caché de la vista detrás del panel de configuración antes de animar sería beneficioso de alguna manera?

Para mí, este es un nuevo territorio, y sé que debe haber formas de optimizar que se consideran una buena práctica. ¡Gracias por tu tiempo!

¿Fue útil?

Solución

No importará si usas Core Animation " directamente " o anime la propiedad central: está entrecortada porque el hardware de gráficos tiene que componer la imagen transparente con el fondo en cada fotograma de la animación. Usted mismo dijo que el uso de un PNG completamente opaco hace que la animación sea suave.

Intente ejecutar la aplicación en Instrumentos, la herramienta Core Animation tiene algunas casillas de verificación que resaltan áreas compuestas en tiempo real y que podrían darle algunos consejos sobre cómo volver a hacer su dibujo.

Si solo los 30 píxeles superiores deben ser transparentes, podría valer la pena dividir el fondo en dos vistas, una franja de 30 píxeles en la parte superior (transparente) y el resto (opaca). Si está componiendo la vista completa en cada fotograma, ese cambio podría ser suficiente para hacerle saber que solo tiene que componer solo los 30 píxeles en la parte superior.

Otros consejos

He tenido algunos problemas con la animación del marco en el pasado, intenta animar la propiedad central en su lugar.

También, ¿para qué necesita la transparencia en la imagen de fondo? ¿No será posible que solo uses esa imagen como fondo de la vista contenedora y elimines la necesidad de UIImageView?

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