我正在创建一个揭示底层图像的动画。有一个虚拟形状(例如星星)在无序移动并揭示图像的不同部分。
所以到目前为止我有两个位图:
drawRect()
我曾是:不,您不应该操作位图。这很可能会占用大量 CPU 资源并且生涩(不流畅的动画)。
相反,您应该使用 CAShapeLayer 作为蒙版和核心动画。
使用形状图层,您可以将路径(CGPath,可以从 UIBezierPath 轻松创建)安装到图层中。然后创建一个 CABasicAnimation 将路径切换到新路径。诀窍是在动画的开始和结束路径中始终保持相同数量和类型的控制点。 (如果两条路径中控制点的数量和/或类型不同,您会得到非常非常奇怪的结果。请注意,创建圆弧的路径调用实际上会根据您的圆的数量生成不同数量的控制点弧覆盖,因此圆弧需要特殊处理。)
我在 Github 上有一个示例项目,它演示了各种核心动画技术,包括“时钟删除”动画的演示,该动画显示/隐藏和 ImageView 非常像您描述的那样。
https://github.com/DuncanMC/iOS-CAAnimation-group-demo
动画看起来是这样的:
请注意,该图像的生涩本质是因为它是 GIF。设备上的实际动画非常流畅。也可以创建非常复杂的平滑动画,如下所示:
(这不是面具动画,但可能是。)
关于ios - 掩蔽性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31872176/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) | Powered by Discuz! X3.4 |