Using transition CIFilters for CATransition

2019-04-25 15:41发布

I'm trying to use CATransition's filter property with the new iOS 6 transition animations (CIBarsSwipeTransition, CICopyMachineTransition, etc.). The CIFilter documentation says that these are available on iOS 6, and nothing on the CATransition documentation says that the filter property cannot be used.

But, I can't seem to get them to work. I don't know if Apple just failed to mention the inavailability of the functionality or I'm just missing something to make it work. Here's how I set it up:

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];

Any pointers are appreciated.

2条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-04-25 16:27

I'm not sure it is possible on iOS. From the CATransition documentation:

If specified, the filter must support both kCIInputImageKey and kCIInputTargetImageKey input keys, and the kCIOutputImageKey output key.

From the CIFilter documentation (constants section) (emphasis mine)

kCIInputTargetImageKey

A key for a CIImage object that is the target image for a transition. Available in OS X v10.5 and later. Not available in iOS.

The filter exists, and inputTargetImage is one of the input keys, but even if you create the core image data yourself and assign it to the properties (which displays properly in the debugger) then you still don't get the effect.

Creating the same effect on OS X is as simple as the code in your question. I have filed this as a radar (13281399).

查看更多
甜甜的少女心
3楼-- · 2019-04-25 16:35

I know that question is quite old but I got mine working by following that link

https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/CoreImaging/ci_tasks/ci_tasks.html

Check the 11 steps in the section "Using Transition Effects" it works on iOS as well

查看更多
登录 后发表回答