UIImageView和drawInRect有什么区别?

时间:2010-10-01 11:28:07

标签: iphone uiimageview uiimage drawrect

我想在表格单元格中显示如此多的图像。我知道两种显示图像的方法。

一个是为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 个答案:

答案 0 :(得分:33)

使用drawInRect:方法,CoreGraphics使用CPU将图像绘制到活动CGContext中。假设您使用UIView的{​​{1}}方法,这会将图像绘制到视图的缓冲区中。

drawRect:使用分配给它的图像作为后备缓冲区,而不是使用较慢的UIImageView。然后,当通过QuartzCore合成屏幕时,GPU直接引用此缓冲区。

答案 1 :(得分:0)

UIImageViewUIView子类。通过将其添加到视图层次结构中,您可以获得所有免费优势:动画,大小属性,仿射变换等。此外,您可以随时更改基础UIImage

另一方面,调用drawInRect:只会绘制您告诉它的图像,但不会与UIView层次结构进行交互,因此您无法获得任何好处在视图层次结构上。

我认为(没有尝试过),直接绘制图像的速度更快,但我认为在大多数情况下使用UIImageView是更好的主意。