Frage

Ich fürchte, dieses Übel Code ist:

CGRect iRect = CGRectMake(0.0f, 0.0f, 320.0f, 400.0f);
UIImageView *imgView = [[UIImageView alloc] initWithFrame:iRect];
imgView.animationImages = [NSArray arrayWithObjects:
                [UIImage imageNamed:@"b0001.png"],
                [UIImage imageNamed:@"b0002.png"],
                // 150 more
                [UIImage imageNamed:@"b0152.png"],
                nil];

ich leicht vergessen, dass imagenamed: Übel ist. Wenn ich auf diese Weise, und ich wurde UIImage Objekte zur Verfügung zu stellen, dann Objekte diejenigen UIImage sofort diese Bilddateien in den Speicher geladen werden, nicht wahr? Und außerdem, dass alle jene 152 klobig UIImage Objekte einen großen Durchbruch in Erinnerung, weil sie Autoreleased sind, nicht wahr?

Also abschließend, saugt mit dieser Technik. Macht es? Ich weiß es nicht. Auf meinem Alter alter erster Generation iPod touch scheint dies ohne Verzögerung bei 25 Bildern pro Sekunde zu laufen. Sehr glatt und schön. Das einzige, was ich zu befürchten ist, dass einige andere Geräte über die anderen vielleicht denken. Obwohl ich die schwächste programmierbare verfügbar ipod touch haben.

Wie auch immer, hat jemand eine Verbesserung Möglichkeit dort sehen? Oder sollte ich das nicht setImage verwenden und benutzen von UIImageView in einem eigenen Algorithmus, der diese Bilder mit einer verzögerten Wähler würden laden und festgelegt, dass klobig imageWithContentsOfFile Sache mit (möglicherweise genannt verschieden sein), ohne Autofreigabe? Vielleicht schrieb einige clevere Kerl ein wenig lib für hohe Leistung Daumen vids, die von Bildsequenzen bestehen?

(nein, Video ist nicht eine Option auf dem iPhone, das Apple-Frameworks für den nur Vollbild unterstützt, und ich weiß nicht von irgendetwas anderes, das es tun würde)

War es hilfreich?

Lösung

Ich würde bleiben weg von dem Versuch, so viele Bilder in ein UIImageView Array zu laden. Eine ähnliche Frage war hier gefragt. Der Puffer Methode, die ich dort beschreiben sollte auch auf Ihre Situation zutreffen.

Andere Tipps

Sie haben Recht, über imagenamed ... Sie sollten es in vielen Fällen nicht verwenden, da es intern das Bild zwischenspeichert. Verwendung:

[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image1" ofType:@"png"];

Die einzige Zeit, die Sie wollen imagenamed verwenden ist, wenn

1) Sie sind die Wiederverwendung ein Symbol über und über (Tableviews etc ...)
2) Sie haben nicht implementiert Ihr eigenes Caching-System

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top