Domanda

Ho una sequenza di immagini necessari per visualizzare in breve tempo (sequenza PNG). Ci sono totalmente 31 PNG in totale, ognuno con la dimensione del file su 45KB. Ho già li caricato con i seguenti codici:

imgArray = [[NSMutableArray alloc] init];
for(int i = 0; i <= 30; i++) {
    NSString * filename = [NSString stringWithFormat:@"img_000%.2d.png", i];
    UIImage *temp = [UIImage imageNamed:filename];
    [imgArray addObject:temp];
    [temp release];
    temp = nil;
} 

Io uso i seguenti codici per la visualizzazione delle immagini:

CGImageRef image = [(UIImage *)[imgArray objectAtIndex:imgFrame] CGImage];
imgLayer.contents = (id)image;
if(imgFrame < 29) {
    imgFrame++;
} else {
    imgFrame = 0;
    imgLayer.hidden = TRUE;
    [imgTimer invalidate];
}

dove imgLayer è un CALayer. (ImgTimer è un timer ripetuto con 0.03s intervallo)

Ma ho scoperto che quando chiamo le immagini fuori, è molto lag alla prima volta. Tranne il primo aspetto, altro aspetto non ha alcun problema.

E 'correlata al precaricamento immagini? O sono le mie immagini troppo grandi dimensioni del file?

È stato utile?

Soluzione

Il motivo per i vostri ritardi sono difficili da raccontare, senza profilazione dei dati. Ma qui è un trucco che potrebbe aiutare: Unire tutte le immagini in un unico file di grandi dimensioni. Provate a fare rettangolare (6x6 forse nel tuo caso o 4 * 8). Poi caricare questo singolo file e ritagliare ogni immagine per display (vale a dire creare un'immagine per la visualizzazione con le dimensioni di una tessera e copiare una tessera dalla grande immagine dopo l'altra in immagine del display).

Altri suggerimenti

Le immagini vengono caricate quando vengono utilizzati e visualizzati. Se si utilizza il profiler tempo in Strumenti, si il ritardo che stai vivendo. Se quindi lo zoom a quella lag e guardare a ciò che sta causando, di solito si vede che "copyImageBlockSetPNG" è la funzione di prendere tempo, giusto prima di "gonfiare".

Quello che si deve trovare il modo di fare è creare le vostre immagini e la forza caricarli prima di averne bisogno. Questa è un'altra storia a quanto pare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top