UIViewのアニメーションを滑らかに動かす
UIViewのsetAnimationCurve:(UIViewAnimationCurve)で指定できるイージングはたったの四種類で表現力に乏しい。そこでもっと自由にUIViewを動かしたい場合、CAMediaTimingFunctionを指定してLayerを動かすとうまくいく。
UIView *moveView; CALayer *moveLayer; CABasicAnimation *moveAnim; CAMediaTimingFunction *timingFunc; timing = [CAMediaTimingFunction functionWithControlPoints:0.3f :0.8f :0.8f :1.0f];//(0,0),(0.3,0.8),(0.8,1.0),(1,1)の四点で描かれるベジエ曲線様のイージング moveLayer = moveView.layer; moveAnim = [CABasicAnimation animationWithKeyPath:@"position"];//Animatableなプロパティならposition以外でも可能 moveAnim.timingFunction = timing; //moveAnim.* = * //いろいろ省略 [moveLayer addAnimation:moveAnim forKey:kCATransition];
これで指定できるイージングは四点で指定されるベジエ曲線状のものだけなので、もっと細かく決めたい場合、アニメーションを分割するかCAKeyframeAnimationを使うかする必要があるようだ。