UIImageView和drawInRect有什么区别?

14 iphone uiimageview uiimage drawrect

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

一个是为UIImageView创建一个实例并显示它

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

另一种方法是,

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

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

提前致谢....

rpe*_*ich 33

使用该drawInRect:方法,CoreGraphics CGContext使用CPU 将图像绘制为活动图像.假设你在一个很UIViewdrawRect:方法,这将绘制图像到视图中的缓冲区.

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

  • `-drawRect:`是一个优势的一种情况是当你想要平滑的滚动性能并且你有PNG具有透明度时.在较旧的硬件上,GPU无法在不丢帧的情况下同时滚动大量透明视图.解决这个问题的一种方法是在`-drawRect:`中完成所有的合成,它将这个繁重的GPU工作转换为一次性繁重的CPU工作.这是图形密集表视图单元中相对常见的情况,尽管由于GPU速度更快,因此iPhone 4和iPad的问题并不多. (3认同)