14

表のセルに非常に多くの画像を表示したい。画像を表示する 2 つの方法を知っていました。

1 つは、UIImageView のインスタンスを作成して表示することです。

CGRect rect=CGRectMake(x,y,width,height);
UIImageView *image=[[UIImageView alloc]initWithFrame:rect];
[image setImage:[UIImage imageNamed:@"sample.jpg"]];

別の方法は、

CGRect rect=CGRectMake(x,y,width,height);
[[UIImage imageNamed:@"sample.jpg"] drawInRect:rect];

さて、私の質問は、これら2つの違いは何ですか? どれが効率的ですか?または、これよりも優れた別の機能を利用できますか?

前もって感謝します....

4

2 に答える 2

32

メソッドを使用すると、drawInRect:CoreGraphicsCGContextは CPU を使用してアクティブに画像を描画します。UIViewのメソッドにいると仮定するとdrawRect:、これは画像をビューのバッファに描画します。

UIImageView遅い を使用する代わりに、バッキング バッファーとして割り当てられているイメージを使用しますdrawRect:。その後、GPU は、画面が QuartzCore を介して合成されるときに、このバッファーを直接参照します。

于 2010-10-01T12:08:50.320 に答える
0

UIImageViewUIViewサブクラスです。ビュー階層に追加することで、アニメーション、サイズプロパティ、アフィントランスフォームなど、すべての無料のメリットが得られます。さらに、基になる要素をUIImageいつでも変更できます。

一方、呼び出しdrawInRect:は、指示した場所に画像を描画するだけで、UIView階層と相互作用しないため、ビュー階層に画像を配置してもメリットはありません。

(試したことはありませんが)画像を直接描く方が速いと思いますが、ほとんどの場合、UIImageViewaを付ける方が良いと思います。

于 2010-10-01T11:55:41.953 に答える