使用转场CIFilters进行CATransition

7
我正在尝试使用 CATransitionfilter 属性与新的 iOS 6 过渡动画(CIBarsSwipeTransition、CICopyMachineTransition 等)一起使用。 CIFilter 文档 表示这些在 iOS 6 上可用,而 CATransition 文档 上没有说明 filter 属性不能使用。
但是,我似乎无法让它们正常工作。 我不知道苹果是否忘记了提到该功能不可用,还是我缺少使其正常工作的某些东西。以下是我的设置方式:
CIFilter *transitionFilter = [CIFilter filterWithName:@"CIBarsSwipeTransition"];
[transitionFilter setDefaults];

CATransition *transition = [CATransition new];
transition.duration = 0.4f;
transition.filter = transitionFilter;

[self.view.layer addAnimation:transition forKey:kCATransition];

非常感谢您的帮助和指点。

2个回答

4

我知道那份文档,也知道创建单独帧的步骤。这是否意味着我必须子类化CATransition并自己实现转换?这似乎对于存在filter属性来说毫无用处。 - John Estropia

3

我不确定在iOS上是否可能。从CATransition文档中可以看到:

如果指定,则滤镜必须支持kCIInputImageKeykCIInputTargetImageKey输入键以及kCIOutputImageKey输出键。

CIFilter文档(常数部分)可以看到(重点是我的):

kCIInputTargetImageKey

用于过渡的目标图像的CIImage对象的密钥。仅在OS X v10.5及更高版本中可用。iOS不可用

虽然该过滤器存在,inputTargetImage是其中之一的输入键,但即使您自己创建核心图像数据并将其分配给属性(在调试器中正确显示),您仍然无法获得效果。

在OS X上创建相同的效果就像您提问中的代码那样简单。我已将此作为雷达(13281399)提交。


你能提供一份关于“在iOS中不可用”的文档链接吗?我在问题中提供的文档并没有提到这一点。无论如何,我早就放弃了,自己制作了定制实现。我会将这个作为答案标记,因为你似乎比我更加关注此事,并且已经提交了一个雷达文件。 - John Estropia
1
常量部分在底部,答案中已添加链接。 - jrturton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接