2016-11-16 4 views
0

UIImageView hat animationImages zum Animieren der Sequenz von Bildern. Das funktioniert gut. Aber es hält das Bildobjekt. Es gibt also eine Spitze in der Verwendung von Speicher, wenn diese Animation stattfindet. Ich versuchte NSTimer für die Einstellung Bild-Eigenschaft dieser Bildansicht, aber es funktioniert nicht.Gibt es Alternativen zum Animieren von Bildern mit UIImageView?

Können wir dies in einem anderen Ansatz erreichen?

+0

können Sie Bilder zeichnen einer nach dem anderen mit Core Graphics und CADisplayLink. –

Antwort

0

Anstatt nach Alternativen zu suchen, versuchen Sie einfach, den vorhandenen Code zu korrigieren.

Die beste Praxis ein Bild für animationImages der Zuweisung sollte

imageNamed: es Cache Ihre Bilder mit initWithContentsOfFile statt imageNamed: sein und Sie die Kontrolle über den Speicher verlieren - es gibt keine Garantie, dass das Objekt die Freigabe wird das Bild tatsächlich freigeben, aber bietet beim zweiten Mal ein schnelleres Laden der Bilder, wenn sie zwischengespeichert werden.

imageWithContentsOfFile: Es speichert keine Bilder und ist mehr Speicher freundlich, da es nicht Bilder zwischenspeichert und die schwereren Bilder werden viel langsamer geladen.

Wenn die Animation stoppt, geben Sie einfach das Bildsammlungsfeld frei. Wenn Sie ARC verwenden, dann machen Sie das Bildsammlungs-Array zu Null.

Best Practice:

for(int itemIndex = 0; itemIndex < 20; itemIndex++) { 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myImage1" ofType:@"png"]; 
    UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath]; 

    [imageArray addObject:image]; 
} 

Nach der Animation:

imageArray = nil; 
Verwandte Themen