2010-11-04 6 views
7

Welche ist besser zu verwenden, wenn ich einfach ein Hintergrundbild für eine UIView möchte? Ich kann dies mit beiden Methoden erreichen, aber was ist effizienter? Meine Ahnung ist, dass die Verwendung einer UIView mit colorWithPaternImage effizienter ist als die Verwendung einer UIImageView. Ich werde das für jede Zeile in einem UITableView verwenden. Vielen Dank! MattcolorWithPatternImage Vs. UIImageView

Antwort

15

Ich stimme überhaupt nicht mit Boreas überein. Es kann signifikante Unterschiede zwischen colorWithPatternImage und anderen Strategien geben, abhängig von Ihren Anforderungen. Wenn Sie z. B. eine UIScrollView verwenden, lässt die Verwendung von colorWithPatternImage das Bild nicht scrollen. Im Allgemeinen hängt es auch davon ab, wie groß Ihre Ansicht ist, da es bei verschiedenen Tiling-Strategien einen gewissen Kompromiss zwischen Performance und Speicherbedarf gibt.

Auschecken WWDC 2010 session 104, die Tiling-Leistung mit CATiledLayer diskutiert. Dies ist eine gute, leistungsstarke Alternative zur Verwendung der integrierten colorWithPatternImage oder CGContextDrawTiledImage.

Wenn Sie nur ein einzelnes 320x480 statisches Bild anzeigen möchten, dann gibt es keine signifikanten Unterschiede in den verschiedenen Strategien, aber wenn Ihre Anforderungen komplexer sind, dann gibt es sicher.

+1

Was ist, wenn ich nicht möchte, dass das Bild gekachelt wird. Ich möchte nur, dass es einmal auftaucht, wie wenn ich ein 'UIImageView' benutzen würde? – ma11hew28

+0

Wenn das Bild nicht gekachelt werden soll, können Sie nicht 'backgroundColor colorWithPatternImage' verwenden, es sei denn, die Ansicht, für die Sie die Hintergrundfarbe festlegen, hat genau die gleiche Größe wie das Bild, das Sie als Hintergrundmuster festlegen. In diesem Fall müssen Sie "UIImageView" als Unteransicht hinzufügen. Einfache Ansichten werden überall in iOS verwendet und haben im Allgemeinen nur sehr geringe Auswirkungen auf die Leistung. Es ist also nichts falsch daran, ein benutzerdefiniertes Hintergrundbild für Ihre Tableview-Zellen zu haben. – memmons

+0

Wenn also die Ansicht, für die ich die Hintergrundfarbe einstelle, genau die gleiche Größe hat wie das Bild, das ich als Hintergrundmuster einstelle, ist es effizienter, 'colorWithPatternImage' anstatt' UIImageView' zu verwenden? Macht es einen Unterschied, ob das Bild nur einmal auf dem Bildschirm angezeigt wird oder ob das gleiche oder ein anderes Bild in jeder Tabellenansichtszelle angezeigt wird? – ma11hew28

1

Ja, es gibt dort eine UIView sowieso, also warum stört es mit einem anderen UIImageView?