3

我想使用CABasicAnimation. 我想为这个过滤器的一些属性设置动画。我从文档中读到该filters属性是可动画的,但在同一个文档中,似乎真的很难找到一种方法来做到这一点!

那么,如何使用 animationWithKeyPath 引用 CABasicAnimation 中的单个过滤器属性?

[CABasicAnimation animationWithKeyPath:@"filters._FILTER_._PROPERTY_"];

这是一个完整的示例,只是为了向您展示我是如何让它工作的:

//Define the filter
CIFilter *filterOne = [CIFilter filterWithName:@"CISepiaTone"];
[filterOne setDefaults];

//Attach it to the Layer
self.layer.filters = [NSArray arrayWithObject:filterOne];

//HERE THE PROBLEM ---------------------------------------
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"filters.???????.inputIntensity"];
//EOF HERE THE PROBLEM -----------------------------------

//Define the Animation settings
animation.delegate = self;
animation.fromValue = [NSNumber numberWithInt:0];
animation.toValue = [NSNumber numberWithInt:1];
animation.duration = 0.3;
...etcetc...
4

1 回答 1

7

我认为 layer filters 属性在 iOS 中根本不起作用。最近在 Apple 网站的 Apple Core Animation 论坛上对此进行了讨论,一位名为“Rincewind”的 Apple 工程师发帖称,iOS 根本没有实现图层过滤器功能。

文档说:

iOS 注意:虽然 iOS 中的 CALayer 类公开了 filters 属性,但 Core Image 不可用。目前,可用于此属性的过滤器未定义。

据我所知,您只能通过直接调用 CI 过滤器并获取 CIImage 作为输出来使用它们。然后,您必须通过代码使用 CIImage。

于 2012-10-20T01:53:01.647 回答