【发布时间】:2014-07-09 02:09:58
【问题描述】:
我有一个UIImage 的波形,它是从音频文件的样本中创建的。波形为蓝色,背景为白色。我希望蓝色波形在播放音频时变为红色以指示进度。如果我有两个相同波形的 UIImage:一个是蓝色的,一个是红色的 - 是否有某种动画图像擦除可以实现这一点?
当波形为UIView 并且我只是在蓝色 UIView 波形上绘制红色 UIView 波形时,我已经能够实现这一点,但是如果我有多个波形(我这样做 - 在表格视图中),这使我的 CPU 使用率超过 95% 并导致很多延迟 - 即使没有播放音频。我相信如果我走 UIImage 路线,事情会顺利得多,因为我只有静态图像。
有什么建议吗?
【问题讨论】:
-
您可以使用 transitionWithView:duration:options:animations:completion: 在两个图像之间进行淡入淡出。在这里查看我的答案,stackoverflow.com/questions/24370695/…
-
如果我可以从左到右淡出/淡入,那可能会起作用。这可能吗?
-
哦,抱歉,您正在寻找从一侧到另一侧的擦除效果?我不认为你可以用这种方法做到这一点。您是否考虑过将音频数据转换为 UIBezierPath?您可以为贝塞尔路径的描边设置动画。
-
在早期阶段,我使用 UIBezierPath 渲染波形,然后将其捕获为图像并将图像显示在我的 tableview 单元格中。我不太确定,但我认为处理两个静态图像并不像一遍又一遍地绘制 UIBezierPath 那样占用 CPU。
标签: ios objective-c cocoa-touch uiview uiimage