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