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

iOS ではレイヤー フィルター プロパティがまったく機能しないと思います。Apple のサイトの Apple Core Animation フォーラムで最近これに関する議論があり、「Rincewind」と呼ばれる Apple のエンジニアは、レイヤー フィルター機能は iOS にはまったく実装されていないと投稿しました。

ドキュメントには次のように記載されています。

iOS 注: iOSの CALayer クラスはフィルター プロパティを公開しますが、Core Image は使用できません。現在、このプロパティで使用できるフィルターは定義されていません。

私の知る限り、CI フィルターを直接呼び出して CIImage を出力として取得することによってのみ、CI フィルターを使用できます。次に、コードで CIImage を使用する必要があります。

于 2012-10-20T01:53:01.647 に答える