我想实现一个新的 CATransition。
例如,假设我想做这样的效果:一个由 m 为两侧的层组成的数组,其中一侧具有源图像的一部分,另一侧具有目标图像的一部分。每一层将围绕其 x 轴旋转 180 度以显示另一侧。这样的逻辑(动画 CALayers)可以用于 CATransition 吗?
我想实现一个新的 CATransition。
例如,假设我想做这样的效果:一个由 m 为两侧的层组成的数组,其中一侧具有源图像的一部分,另一侧具有目标图像的一部分。每一层将围绕其 x 轴旋转 180 度以显示另一侧。这样的逻辑(动画 CALayers)可以用于 CATransition 吗?
我不认为你能做到这一点。CATransition
自定义内置类型和子类型之外的唯一方法是使用CIFilter
(来自 iOS 5.0 或 OSX 10.5)。根据文档CIFilter
,除了链接和配置内置过滤器之外,创建自定义的唯一方法是:
您可以继承 CIFilter 以创建:
- 通过将两个或多个内置核心图像过滤器(iOS 和 OS X)链接在一起的过滤器
- 使用您编写的图像处理内核的自定义过滤器(仅限 OS X)
所以基于 CALayer 动画来做这件事是不可能的。在 OSX 上,这应该可以通过一些数学工作来管理,但不能直接使用 CALayers 动画。在 iOS 中,这根本不可能。
您可以通过直接使用图层来实现相同的效果,而不是执行 CATransition,但显然它不会那么容易地集成到您的 UI 代码中。
我写了一个你描述的过渡效果,但它不是 CATransition。相反,我创建了自己的方法来处理视图转换并调用它。
我的过渡将两个视图切割成垂直切片,然后制作了一个动画,我开始围绕它们的 Y 轴旋转切片,从最左边的切片开始向右工作,这会产生看起来很酷的级联效果。使用 CAAnimationGroup 对象需要做很多工作,加上对每个片段的动画使用 beginTime 来错开它的开始。一个过渡动画大约需要 5 页代码。