我想在表格单元格中显示如此多的图像。我知道两种显示图像的方法。
一个是为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];
现在,我的问题是,这两者有什么区别?哪一个有效?还是有其他功能比这更好?
提前致谢....
答案 0 :(得分:33)
使用drawInRect:
方法,CoreGraphics使用CPU将图像绘制到活动CGContext
中。假设您使用UIView
的{{1}}方法,这会将图像绘制到视图的缓冲区中。
drawRect:
使用分配给它的图像作为后备缓冲区,而不是使用较慢的UIImageView
。然后,当通过QuartzCore合成屏幕时,GPU直接引用此缓冲区。
答案 1 :(得分:0)
UIImageView
是UIView
子类。通过将其添加到视图层次结构中,您可以获得所有免费优势:动画,大小属性,仿射变换等。此外,您可以随时更改基础UIImage
。
另一方面,调用drawInRect:
只会绘制您告诉它的图像,但不会与UIView
层次结构进行交互,因此您无法获得任何好处在视图层次结构上。
我认为(没有尝试过),直接绘制图像的速度更快,但我认为在大多数情况下使用UIImageView
是更好的主意。