UIViewをY軸を中心に一回転させる方法

Y軸を中心に(3D的に?)UIViewを回転させる方法です。
Layerアニメーションの終了時に処理をさせるサンプルにもなっています。


// 回転させたいUIViewのLayerを取得
CALayer* layer = self.view.layer;

// トランザクションの開始
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];

// Y軸での回転アニメーション
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
animation.duration = 0.4;   // 速度(秒数)
animation.repeatCount = 1;  // 繰り返す回数
animation.fromValue = [NSNumber numberWithFloat:0.0];       // 開始角度
animation.toValue = [NSNumber numberWithFloat:2 * M_PI];    // 終了角度(1周)
    
// Layerにアニメーションを登録
[layer addAnimation:animation forKey:@"rotation-y"];
    
//終了時の処理を登録
[CATransaction setValue:^{
   layer.transform = CATransform3DIdentity;//今回の例だと不要(だと思う)ですが、layerの変形を初期状態に戻します
} forKey:kCATransactionCompletionBlock];
    
// コミット→アニメーション開始
[CATransaction commit];

このサンプルでは ”transform.rotation.y”の値を書き換えていますが、複雑なアニメーションを行う場合には
CATransform3DMakeRotationあたりでCATransform3Dを作成し、”transform”を直接変更した方が良いのかもしれません。

UIViewをY軸を中心に一回転させる方法」への1件のフィードバック

  1. ピンバック: 超簡単にフリップアニメーションさせる方法目くじら日記 | 目くじら日記

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です