我正在创建一个揭示底层图像的动画。有一个虚拟形状(例如星星)混乱地移动并揭开图像的不同部分。
到目前为止我有两个位图:
到目前为止,每个drawRect()
我都是:
我在这种方法中挣扎着表现。任何想法如何改进它?
特别是:
答案 0 :(得分:1)
不,你不应该操纵位图。这可能是CPU密集型以及不平稳(不平滑的动画)。
相反,你应该使用CAShapeLayer作为掩码和核心动画。
使用形状图层,您可以将路径(可以从UIBezierPath轻松创建的CGPath)安装到图层中。然后创建一个CABasicAnimation,将路径切换到新路径。诀窍是始终在动画的起始和结束路径中保持相同数量和类型的控制点。 (如果两条路径中控制点的数量和/或类型不同,则会得到非常非常奇怪的结果。请注意,创建圆弧的路径调用实际上会根据圆圈的多少来生成不同数量的控制点弧形盖,因此圆弧需要特殊处理。)
我在Github上有一个示例项目,演示了各种核心动画技术,包括演示"时钟擦除"显示/隐藏和图像视图的动画,就像你描述的那样。
https://github.com/DuncanMC/iOS-CAAnimation-group-demo
动画如下所示:
请注意,该图片的生涩性质是因为它是GIF。设备上的实际动画是黄油般的。它也可以创建非常复杂的平滑动画,如下所示:
(这不是面具动画,但可能是。)