いよいよ波紋に挑戦。
CIFilterを作り CATransitionへ登録する。
NSURL* url0 = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForImageResource:@"shading"]];
CIImage* image0 = [CIImage imageWithContentsOfURL:url0];
NSRect rect = [_view bounds];
CIFilter* filter = [CIFilter filterWithName:@"CIRippleTransition"];
[filter setDefaults];
[filter setValue:[CIVector vectorWithX:NSMidX(rect) Y:NSMidY(rect)] forKey:kCIInputCenterKey];
[filter setValue:[CIVector vectorWithX:rect.origin.x Y:rect.origin.y Z:rect.size.width W:rect.size.height] forKey:kCIInputExtentKey];
[filter setValue:image0 forKey:kCIInputShadingImageKey];
CATransition *transition = [CATransition animation];
[transition setFilter:filter];
トランジション前後の画像に加えて shadingImage が必要になる。これは以前紹介したページでは「環境マップ」と呼ばれていた。今回は透明な1枚の画像を用意して使ってみた。
実行してみる。まず初期画面。
トランジション実行。
おお前回と違って動きがある。
だけどなんか違うな。
イメージとしては Dashboardの Widgetの出現の時に出る波紋を想定していたが、ああはならない。
何が違うのだろうか。。
サンプル:RippleTransition-2.zip