Estoy tratando de obtener una imagen de una vista donde un usuario puede pintar, o agregar algunas otras vistas. Con el iPad1 & 2, todo funciona bien hasta el momento. Pero en el iPad3 funciona como un perro. Solo estoy usando las capas del método renderInContext.iPad 3 renderInContext lento - Rendimiento de representación erróneo
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
UIGraphicsBeginImageContextWithOptions(self.viewDrawableViewContainer.frame.size, NO, [UIScreen mainScreen].scale);
else
UIGraphicsBeginImageContext(self.viewDrawableViewContainer.frame.size);
[self.viewDrawableViewContainer.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Sé que esto probablemente es causada por la CPU que es igual a la de un ipad2, pero tardará aproximadamente 1 segundo. Cuanto más pinta o agrega el usuario, más tiempo tardará en renderizarse. A veces hasta 5 segundos, lo cual es realmente inaceptable. Entonces, ¿hay alguna opción para mejorar el rendimiento? Cualquier posibilidad de establecer una calidad de representación más pequeña, no necesito una representación en la resolución de retina más alta ...
¡Agradecería cualquier ayuda! Gracias de antemano
¿Puedes anticipar qué vistas se dibujarán? De ser así, podría hacer el dibujo en segundo plano y almacenar en caché los resultados, lo que no congelaría el dispositivo. –
De acuerdo, gracias por la pista, podría crear una imagen en segundo plano, pero el problema es que el usuario puede escribir algo de texto y tocar ir. Entonces tendría que hacer el dibujo inmediatamente después de la interacción del usuario porque la vista se cerrará después de tocar en go. Pero gracias, tal vez podría renderizar mientras la animación de cierre está funcionando. Lo probaré ... ¿Así que no hay otras formas de mejorar el rendimiento del renderizado? – Alexander
Desafortunadamente no, producir 4 veces en esencialmente la misma CPU que muchos píxeles simplemente mata el rendimiento. Enmascararlo con animaciones es una gran manera de resolver el problema, y es cómo lo hace Apple. Si le permite al usuario dibujar en una vista, ¿a qué está recurriendo? ¿No hay ningún UIImage que respalde la opinión de que puede retirarse inmediatamente en lugar de mostrar la vista en un contexto? –