iphone - 优化 Core Graphics 动画绘图 (iPhone)

标签 iphone objective-c animation core-graphics cglayer

我有一个每秒触发函数 30 次的循环。该函数更改了我用来制作动画的几个点的位置。我在所有点上画线,这意味着这些线每秒会变化 30 次。

我将这些线绘制到 CGLayer,然后在 drawRect: 方法中将其绘制到 UIView。我这样做是因为我知道在屏幕外绘制时性能会提高。但是,CGLayer 似乎保存了所有实际线条而不是绘制的像素,因为即使我清除它,当绘制更多线条时,程序运行速度也会随着时间的推移而越来越慢。

我正在寻求其他方法来制作动画。什么是最有效的方法,为什么?

最佳答案

您应该使用 Core Animation 框架来为层上的属性设置动画。您可以子类化 CALayer 或使用委托(delegate)来进行实际绘图。在绘图代码中,您可以访问正在插值的属性并使用它来移动点、更改线的粗细或 Core Graphics 允许您控制的任何其他内容。看this example code from Apple并查看它如何使用正在设置动画的 lineWidth 值。

This little tutorial by John Blackburn是我最喜欢的 Core Animation 介绍之一。有几个不同的概念需要掌握,但通常创建非常复杂的动画非常简单。

您遇到的运行速度越来越慢的问题很可能与 Core Graphics 无关。例如,可能是您不小心创建了越来越多的计时器。

关于iphone - 优化 Core Graphics 动画绘图 (iPhone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3310883/

相关文章:

iphone - 方便地将 HTML 转换为 NSString

objective-c - 使用 OpenCV 在 iOS 中进行透视变换 + 裁剪

iphone - 检测耳机是否插入 iPhone

ios - TableView 单元格在操作后恢复正常状态

objective-c - 如何检测当前位置是否在具有 CoreLocation 的区域内

javascript - 回调中的动画未触发,SnapSVG

ios - UIView block 动画更新间隔

ios - 受自动布局约束的动画 View

iphone - 如何将 Gmail 和 yahoo 联系人提取到我的 iPhone 应用程序

iphone - 无法在 iOS 上以编程方式调整 UITableView 的大小