优化CGLayer drawRect方法

时间:2009-05-03 06:24:11

标签: iphone objective-c optimization

我目前正在使用CGContextDrawLayerInRect在drawRect中绘制CGLayer。这经常被称为。有没有办法通过只绘制已更改的CGLayer部分而不是drawRect中的整个CGLayer来减少开销?

-(void)drawRect:(CGRect)rect {
    CGContextRef currentContext = UIGraphicsGetCurrentContext();
    CGContextDrawLayerInRect(currentContext, [self bounds], _backgroundLayer);
}

3 个答案:

答案 0 :(得分:0)

rect参数确实描述了需要重绘的区域。除了使用它来限制你重绘多少,没有。调用drawrect时,您不知道系统对您的图层做了什么 - 例如,您可以将整个视图预呈现为系统动画的新上下文。

你真的看到了糟糕的表现吗?也许您的绘图代码可以通过其他方式进行优化。

答案 1 :(得分:0)

我认为这几乎是你所能得到的优化。可能不太经常调用setNeedsDisplay吗?如果这对你来说太慢了,那么你最好的选择就是使用OpenGL!

答案 2 :(得分:0)

也许尝试完全消除-drawRect:绘制到UIImageView或CALayer中,让它处理它。