【问题标题】:Using Core Animation for a custom CATranstion为自定义 CATranstion 使用核心动画
【发布时间】:2012-10-03 21:33:32
【问题描述】:

我想实现一个新的 CATransition。

例如,假设我想做这个效果:一个 n × m 的数组,由两侧层组成,其中一侧具有源图像的一部分,另一侧具有目标图像的一部分。每一层都将围绕其 x 轴旋转 180 度以显示另一侧。这样的逻辑(动画 CALayers)可以用于 CATransition 吗?

【问题讨论】:

    标签: core-animation core-graphics


    【解决方案1】:

    我认为你做不到。在内置类型和子类型之外自定义CATransition 的唯一方法是使用CIFilter(来自iOS 5.0 或OSX 10.5)。根据the doc,除了链接和配置内置过滤器之外,创建自定义CIFilter 的唯一方法是:

    您可以继承 CIFilter 以创建:

    • 将两个或多个内置核心图像过滤器(iOS 和 OS X)链接在一起的过滤器
    • 使用您编写的图像处理内核的自定义过滤器(仅限 OS X)

    因此,基于 CALayer 动画进行此操作是不可能的。 在 OSX 上,这应该可以通过一些数学工作来管理,但不能直接使用 CALayers 动画。在 iOS 中这是不可能的。

    您可以通过直接使用图层来实现相同的效果,而不是执行 CATransition,但显然它不会那么容易地集成到您的 UI 代码中。

    【讨论】:

      【解决方案2】:

      我写了一个你描述的过渡效果,但它不是 CATransition。相反,我创建了自己的方法来处理视图转换并调用它。

      我的过渡将两个视图切成垂直切片,然后制作了一个动画,我开始围绕它们的 Y 轴旋转切片,从最左边的切片开始向右工作,这会产生看起来很酷的级联效果.使用 CAAnimationGroup 对象需要做很多工作,加上对每个片段的动画使用 beginTime 来错开它的开始。一个过渡动画大约需要 5 页代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多