14

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

一个是为 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];

现在,我的问题是,这两者有什么区别?哪一个是高效的?或者其他功能比这更好?

提前致谢....

4

2 回答 2

32

使用该方法让 CoreGraphics使用 CPUdrawInRect:将图像绘制到活动中。CGContext假设您在UIView'sdrawRect:方法中,这会将图像绘制到视图的缓冲区中。

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

于 2010-10-01T12:08:50.320 回答
0

UIImageView是一个UIView子类。通过将其添加到视图层次结构中,您可以获得所有免费好处:动画、大小属性、仿射变换等。此外,您可以随时更改底层UIImage

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

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

于 2010-10-01T11:55:41.953 回答