Retraso en la matriz de animation de imágenes

Tengo una gran demora en la animation de mi vista de imágenes.

Estoy creando aplicaciones basadas en navigation.

En viewDidLoad de mi tercer controller de vista, creé una vista de image y la agregué como vista secundaria.

self.myImageView = [[UIImageView alloc]initWithFrame:CGRectMake(259, 46, 496, 470)]; self.myImageView.image = [UIImage imageNamed:@"foo.png"]; [self.view addSubview:self.myImageView]; 

y en un button, click Quiero cambiar myImageView de una animation a otra.

Hay dos arreglos de animation de imágenes e inicializado en viewDidLoad, pero demora un poco en llamar [self.myImageView startAnimating]; por primera vez.

En mi button, click "Animar mi vista de image" como se muestra a continuación:

  self.myImageView.animationImages = self.openAnimationArray; [self.myImageView startAnimating]; self.myImageView.animationRepeatCount = 0; 

en el siguiente button presione i animé el mismo ImageView con otro set de imágenes.

 self.myImageView.animationImages = self.closeAnimationArray; [self.myImageView startAnimating]; self.myImageView.animationRepeatCount = 0; 

Mi primer problema fue el retraso mientras navego hacia mi tercer controller de vista. Para evitar este retraso inicialicé y guardé el closeAnimationArray y openAnimationArray en la aplicación Delegate [UIApplication shanetworkingApplication] .delegate.

Experimento esta demora solo en la primera vez que navego hacia el controller de tercera vista. Creo que puede deberse al almacenamiento en caching de imágenes, no hay retraso en la segunda navigation de time. Función ImII image imageAmed caching de las imágenes. Por lo tanto, para evitar el retraso en la navigation por primera vez, forzo las imágenes cargadas desde la aplicación Delegado.

  NSArray * openAnimationArray = [NSArray arrayWithObjects:[UIImage imageNamed:@"1.png"],[UIImage imageNamed:@"2.png"],[UIImage imageNamed:@"3.png"],[UIImage imageNamed:@"4.png"],[UIImage imageNamed:@"5.png"], nil]; for (id object in openAnimationArray) { [object forceLoad]; } 

El método para la carga de fuerza se proporciona a continuación:

 - (void) forceLoad { const CGImageRef cgImage = [self CGImage]; const int width = CGImageGetWidth(cgImage); const int height = CGImageGetHeight(cgImage); const CGColorSpaceRef colorspace = CGImageGetColorSpace(cgImage); const CGContextRef context = CGBitmapContextCreate( NULL, width, height, 8, width * 4, colorspace, kCGImageAlphaNoneSkipFirst); CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage); CGContextRelease(context); } 

Pero aún hay retraso en la animation por primera vez. Afecta muy mal el performance de mi aplicación. Como puedó resolver esté problema.

Prueba esto:

  NSArray * openAnimationArray = [NSArray arrayWithObjects:[UIImage initWithContentsOfFile:@"1.png"],[UIImage initWithContentsOfFile:@"2.png"],[UIImage initWithContentsOfFile:@"3.png"],[UIImage initWithContentsOfFile:@"4.png"],[UIImage initWithContentsOfFile:@"5.png"], nil]; 

UIImage initWithContentsOfFile:@"2.png"] es más rápido que [UIImage imageNamed:@"2.png"] . Porque carga las imágenes sin caching.