Ich möchte so viele Bilder in Tabellenzellen anzeigen. Ich kannte zwei Methoden, um ein Bild zu zeigen.Was ist der Unterschied zwischen UIImageView und drawInRect?
One ist eine Instanz UIImageView zu schaffen und zeigen es
CGRect rect=CGRectMake(x,y,width,height);
UIImageView *image=[[UIImageView alloc]initWithFrame:rect];
[image setImage:[UIImage imageNamed:@"sample.jpg"]];
Eine andere Methode ist,
CGRect rect=CGRectMake(x,y,width,height);
[[UIImage imageNamed:@"sample.jpg"] drawInRect:rect];
Nun, meine Frage ist, was ist der Unterschied zwischen diesen beiden ist? Welche ist effizient? Oder eine andere Funktion ist besser als diese?
Vielen Dank im Voraus ....
+1 für eine tolle Antwort. Ich habe schon seit einiger Zeit versucht, den Unterschied zwischen diesen beiden zu verstehen. Also ist 'UIImageView' immer der richtige Weg? Gibt es Fälle, in denen 'drawRect:' 'das Bild direkt zu bevorzugen ist? –
Die einzige Situation, in der ich feststellen kann, dass sie langsamer ist, ist das Zusammensetzen einer statischen Hintergrundszene aus vielen kleinen Bildern und das anschließende Animieren von Inhalten darüber, ohne den Hintergrund zu ändern. In diesem Fall muss die GPU sowohl den bewegten Inhalt als auch die gesamte Hintergrundszene für jeden Frame neu zusammensetzen. Dies ist natürlich ein Eckfall. – rpetrich
Eine Situation, in der "-drawRect:" von Vorteil ist, wenn Sie eine reibungslose Bildlaufleistung wünschen und PNGs mit Transparenz haben. Auf älterer Hardware kann die GPU nicht eine ganze Menge transparenter Ansichten gleichzeitig scrollen, ohne Frames zu verlieren. Ein Weg, um dies zu tun, ist, all Ihre Kompositionen in '-drawRect:' zu machen, was diese schwere GPU-Arbeit in einen einmaligen schweren CPU-Job umwandelt. Dies ist ein relativ häufiges Szenario in Grafik-Tabellen-Tabellenzellen, obwohl es mit dem iPhone 4 und iPad wegen der schnelleren GPUs nicht so ein Problem ist. –