iOS:在drawRect中绘制RGBA数据,无需事先转换为UIImage

iOS:在drawRect中绘制RGBA数据,无需事先转换为UIImage,ios,uiview,rgb,drawrect,Ios,Uiview,Rgb,Drawrect,我有一个图像存储在RGBA缓冲区中。现在我想在UIView的drawRect方法中绘制这些数据: - (void)drawRect:(CGRect)rect { // draw RGBA here } 一种方法是将数据复制到UIImage(drawRect方法之外)并绘制此UIImage。有没有一种方法可以直接绘制数据,而不必在UIImage中复制另一份 在这方面,使用UIView的drawrect函数进行此操作将非常缓慢。任何时候你都可以设置视图的动画,移动它,移动它上面的其他东西,或者任何

我有一个图像存储在RGBA缓冲区中。现在我想在UIView的drawRect方法中绘制这些数据:

- (void)drawRect:(CGRect)rect
{
// draw RGBA here
}
一种方法是将数据复制到UIImage(drawRect方法之外)并绘制此UIImage。有没有一种方法可以直接绘制数据,而不必在UIImage中复制另一份


在这方面,

使用UIView的drawrect函数进行此操作将非常缓慢。任何时候你都可以设置视图的动画,移动它,移动它上面的其他东西,或者任何需要重新绘制的东西(缓慢的过程)。UIImageView针对这项任务进行了优化,使用它将是有益的

但是,如果您死心塌地地使用drawrect,那么您必须通过将UIView的宽度和高度除以图像的宽度和高度(以像素为单位)来创建“像素”矩形。然后遍历每个像素行和列,并使用
CGContextSetFillColor
CGContextFillRect
。将颜色数组排序为相似的颜色并同时绘制相同的颜色可能会有性能意义。但仍然比UIImageView慢得多。阵列和UIImageView的内存重叠还不足以抵消其好处