首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化CGLayer drawRect方法

优化CGLayer drawRect方法
EN

Stack Overflow用户
提问于 2009-05-03 06:24:11
回答 3查看 1.1K关注 0票数 0

我目前正在使用CGContextDrawLayerInRect在drawRect中绘制一个CGLayer。这是经常被调用的。有没有办法通过在drawRect中只绘制发生变化的那部分CGLayer而不是整个CGLayer来减少开销?

代码语言:javascript
复制
-(void)drawRect:(CGRect)rect {
    CGContextRef currentContext = UIGraphicsGetCurrentContext();
    CGContextDrawLayerInRect(currentContext, [self bounds], _backgroundLayer);
}
EN

回答 3

Stack Overflow用户

发布于 2009-05-03 09:33:13

rect参数描述了需要重新绘制的区域。除了用它来限制你重画的数量,没有。当调用drawrect时,您不知道系统对您的层做了什么-例如,您可以将整个视图预先渲染到系统动画的新上下文中。

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

票数 0
EN

Stack Overflow用户

发布于 2009-05-03 17:44:01

我认为这是你能得到的最好的优化了。有没有可能减少调用setNeedsDisplay的频率?如果这对你来说太慢了,你的下一个最好的选择是使用OpenGL!

票数 0
EN

Stack Overflow用户

发布于 2011-01-11 18:44:54

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/816459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档