使用Core Animation进行自定义CATranstion

时间:2012-10-03 21:33:33

标签: core-animation core-graphics

我想实现一个新的CATransition。

例如,假设我想做这样的效果:一侧是n个m阵列的双面图层,一面是源图像的一部分,另一面是目标图像的一部分。每层将围绕其x轴旋转180度以显示另一侧。这样的逻辑(动画CALayers)可以用于CATransition吗?

2 个答案:

答案 0 :(得分:1)

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

  

您可以继承CIFilter以创建:

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

所以基于CALayer动画这样做是不可能的。 在OSX上,这应该可以通过一些数学工作来管理,但不能直接使用CALayers动画。在iOS中,这根本不可能。

您可以通过直接使用图层来实现相同的效果,而不是进行CAT转换,但显然它不会在您的UI代码中轻松集成。

答案 1 :(得分:0)

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

我的过渡将两个视图切割成垂直切片,然后做了一个动画,我开始围绕Y轴旋转切片,从最左边的切片开始,然后向右移动,这创建了一个看起来很酷的级联效果。使用CAAnimationGroup obbjects需要相当多的工作,并且每个条带的动画使用beginTime来错开它的开始。那个过渡动画花了大约5页的代码。