我想使用CABasicAnimation
將過濾器添加到圖層。我想動畫這個過濾器的一些屬性。我從文檔中看到,filters
屬性是可以動畫的,但在同一個文檔中,似乎很難找到一種方法來做到這一點!如何在iOS中使用CoreAnimation動畫製作CIFilter?
那麼,我怎樣才能從一個CABasicAnimation與animationWithKeyPath引用單個過濾器屬性?
[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...
你試過簡單的@「filters.property」嗎?如果你只有一個數組中的過濾器,這可以工作,因爲'setValue:forKeyPath'將應用於數組的每個元素。不知道多個過濾器... – amadour
@amadour過濾器是一個NSArray。它不能被引用,因爲它是單個過濾器對象。我現在用這種方式使用過濾器的名稱:@「filters.CISepiaTone.inputIntensity」,但我得到了一些其他問題... – MatterGoal