Frage

Vor kurzem habe ich versucht, auf Zeit zu sparen machen, indem die Zeit, über die Zuteilung und Duplizierung von Ressourcen wie Bilder unter Verwendung eines bereits zugewiesenen UIImageViews und UIImages ausgegeben minimiert wird.

Was ich versuche zu tun ist, eine Karte aller UIImages zu halten - jeder ein Unikat, und weisen jeweils ein bis zu mehreren UIImageViews, durch die Nachfrage aus dem Spiel-Engine. Im Laufe des Spiels ich einige UIImageViews aus der Anzeige entfernen, und später könnte sie mit verschiedenen vorinstallierten UIImages wiederverwendet werden.

Das erste Mal, dass ich die UIImageView schaffe ich so etwas wie:

  

m_ImageView = [[UIImageView alloc] initWithImage: initialImg];

     

[m_ParentView addSubview: m_ImageView];

Und die folgenden Male, die ich einfach schalten Sie das Bild:

  

[m_ImageView.image release];

     

[m_ImageView setImage otherSavedImg];

Das Problem ist, dass nach dem Wechsel, als die neue Bildgröße auf die ursprüngliche Bildgröße identisch angezeigt ist. Ich umgangen das Problem durch die UIImageView jedes Mal neu zu erstellen (die wie eine Verschwendung von Zeit scheint), aber ich frage mich, beide, warum dies geschieht und wie kann ich es verhindern.

Danke,

War es hilfreich?

Lösung

Die Dokumentation für UIImageView sagen: „Dieses Verfahren den Rahmen des Empfängers passt die Größe des bestimmten Bildes zu entsprechen.“ Wenn „setImage:“ Aufruf, Ihre Verwendung einer einfachen Eigenschaft Setter. Keine zusätzliche Neuberechnung erfolgt. Wenn Sie die Größe des UIImageView-Rahmen neu zu justieren müssen, müssen Sie dies manuell tun.

aus dem Kontext zu urteilen Sie gaben, dies scheint, wie es etwas sein, werden Sie etwas häufig tun werden. Als solche, empfehle ich eine Kategorie für UIImageView zu erstellen:

UIImageView + Resizing.h:

@interface UIImageView (Resizing)

- (void) setImage:(UIImage *)newImage resize:(BOOL)shouldResize;

@end

UIImageView + Resizing.m:

@implementation UIImageView (Resizing)

- (void) setImage:(UIImage *)newImage resize:(BOOL)shouldResize {
  [self setImage:newImage];
  if (shouldResize == YES) {
    [self sizeToFit];
  }
}

@end

Nun, wenn Sie brauchen, um ein Bild zu ändern und die Imageview der Größe, einfach #import UIImageView + Resizing.h und Verwendung:

[myImageView setImage:anImage resize:YES];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top