【问题标题】:Performance issues scaling multiple CALayers扩展多个 CALayer 的性能问题
【发布时间】:2010-10-24 22:59:43
【问题描述】:
我有两个 CALayer 子类,每个子类都有自己的 drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 委托。它们都是简单的图层(使用 CG 路径绘制的一些单色形状),但我需要同时缩放大约 12 个实例,而且我在帧速率方面遇到了一些问题。我将所有图层标记为不透明以尝试释放一些循环,并尝试使用隐式和显式基本动画(在边界属性本身上),以及将 CA3DTransform 矩阵分配给变换属性。
有没有人知道在保持良好帧速率的同时快速调整对象大小的好方法?
【问题讨论】:
标签:
iphone
objective-c
calayer
frame-rate
【解决方案1】:
这听起来并不超出 iPhone 的功能。
一种解决方案可能是将它们呈现为图像并对其进行缩放?这(或多或少)是 CoreAnimation 会做的事情。听起来你有一个缺陷 - 也许你应该发布你的代码,人们可以查看它。
你在哪里进行重绘,你在重绘什么?
【解决方案2】:
我同意罗杰的观点。
检查您的drawLayer:inContext: 方法(或您用来绘制的任何方法)被调用的频率。一个简单的 NSLog 就可以做到这一点。如果它们不断被调用,请考虑 Roger 将其渲染为图像并对其进行缩放的想法。
您可能必须启动性能工具才能找到您的瓶颈。