Hey,
ich habe mit CoreAnimation gearbeitet und versuche, auf den View eines Fensters einen Filter zu legen und ein Parameter dessen zu animieren.
Das sieht dann so aus:
Alles anzeigen
Der Filter funktioniert prima, aber wenn action: aufgerufen wird, passiert häufig einfach gar nichts. Und wenn es mal animiert, ist inputRadius nach der Animation wieder auf 0. Muss ich den "manuell" nach der Animation auf 2.0 setzen, damit es im Endstand der Animation bleibt?
Ich habe das jetzt auf den contentView des Fensters gemacht. Gibt es eine Möglichkeit, die Filter/Animationen auf das ganze Fenster zu legen?
Würde mich freuen, wenn jemand Zeit hätte, kurz auf den Code zu schauen!
Osxer
ich habe mit CoreAnimation gearbeitet und versuche, auf den View eines Fensters einen Filter zu legen und ein Parameter dessen zu animieren.
Das sieht dann so aus:
Quellcode
- - (IBAction)action:(id)sender
- {
- CALayer *layer = [CALayer layer];
- CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
- [filter setDefaults];
- [filter setValue:[NSNumber numberWithFloat:0] forKey:@"inputRadius"];
- [filter setName:@"blurFilter"];
- [layer setFilters:[NSArray arrayWithObjects:filter,nil]];
- [[window contentView] setWantsLayer:YES];
- [[window contentView] setLayer:layer];
- CABasicAnimation* animation = [CABasicAnimation animation];
- animation.keyPath = @"filters.blurFilter.inputRadius";
- animation.fromValue = [NSNumber numberWithFloat: 0.0];
- animation.toValue = [NSNumber numberWithFloat: 2.0];
- animation.duration = 1.0;
- [layer addAnimation:animation forKey:@"animation"];
- }
Der Filter funktioniert prima, aber wenn action: aufgerufen wird, passiert häufig einfach gar nichts. Und wenn es mal animiert, ist inputRadius nach der Animation wieder auf 0. Muss ich den "manuell" nach der Animation auf 2.0 setzen, damit es im Endstand der Animation bleibt?
Ich habe das jetzt auf den contentView des Fensters gemacht. Gibt es eine Möglichkeit, die Filter/Animationen auf das ganze Fenster zu legen?
Würde mich freuen, wenn jemand Zeit hätte, kurz auf den Code zu schauen!
Osxer