Iphone 什么更快?绘画还是合成?
我广泛使用-drawRect:来制作一些漂亮的动画。一个计时器尝试每秒使用-setNeedsDisplay启动30次,但感觉只有20次。另外,我不能使用-setNeedsDisplayInRect:因为动画涵盖了整个内容 将这些绘图操作从-drawRect:中取出并移动到子视图中会有帮助吗-drawRect需要做的工作要少一些,但操作系统在合成视图方面需要做更多的工作Iphone 什么更快?绘画还是合成?,iphone,Iphone,我广泛使用-drawRect:来制作一些漂亮的动画。一个计时器尝试每秒使用-setNeedsDisplay启动30次,但感觉只有20次。另外,我不能使用-setNeedsDisplayInRect:因为动画涵盖了整个内容 将这些绘图操作从-drawRect:中取出并移动到子视图中会有帮助吗-drawRect需要做的工作要少一些,但操作系统在合成视图方面需要做更多的工作 有没有经验法则哪一个更糟糕?我记得在苹果的一篇文章中,他们声称核心动画在动画制作过程中不会重画。这就是他们速度的秘诀吗?在动画中
有没有经验法则哪一个更糟糕?我记得在苹果的一篇文章中,他们声称核心动画在动画制作过程中不会重画。这就是他们速度的秘诀吗?在动画中使用子视图?其中大部分类似于: 到目前为止,合成速度更快。在iPhone上,使用Quartz绘图调用或位图图像将内容绘制到CALayer(或UIView的后台CALayer)中。然后将该层光栅化,并作为OpenGL纹理有效地缓存在GPU上 这种绘制和缓存操作非常昂贵,但一旦层位于GPU上,它就可以以硬件加速的方式四处移动、缩放、旋转等。当图层设置动画时,GPU所要做的就是每帧将其与屏幕上的其他图层合成。这就是为什么即使是最老的iPhone机型,Core动画也可以在屏幕上以60 FPS的速度制作50层动画 图层和视图仅在出现提示时重新绘制自身,或者在其
需要显示边界设置为“是”时重新调整大小。绘图系统是以这种方式设置的,因为重新绘制和重新设置图层内容的成本非常高。如果可以,请避免定期重画层内容,而是将其拆分为可以使用核心动画单独设置动画的层或视图。如果您需要为更改的形状设置动画,请查看CAShapeLayer,这比简单地重画每一帧更有效
最坏的情况是,可以将视图中的静态部分移动到一个视图中,然后创建一个子视图,该子视图中仅包含图形的更改部分。性能不会很好,但会比必须重新绘制视图中的所有内容要好得多。与绘图费用相比,合成开销可以忽略不计