[Objective-C] [iOS] UIButtonを回転させる (回転のアニメーションをつける)

押された時に回転して、 元に戻るUIButtonの作り方です。 UIButtonを回転させたかったのですがUIButtonのカスタムが必要かと思っていましたが、 UIButtonをカスタムしなくても実現できました。 ## ボタンを回転させる方法 ボタンが押されたタイミングでtransformに値を設定します。 ボタンを元に戻したい時には、transformにCGAffineTransformIdentityを設定します。 ### 半回転させるサンプル ```objc // 半回転させる self.toggleButton.transform = CGAffineTransformMakeRotation(M_PI); // 元に戻す self.toggleButton.transform = CGAffineTransformIdentity; ``` transformを使うことで、簡単にボタンを回転させることができました。 今回はこれを使って、押されたらボタンが時計方向に半回転して、もう一回押したら元に戻るようなサンプルを作成しました。 ### アニメーションして回転させるサンプル ```objc - (IBAction)pushButton:(id)sender { self.showLabel = !self.showLabel; [UIView animateWithDuration:0.3f animations:^(void){ if (self.showLabel) { self.toggleButton.transform = CGAffineTransformMakeRotation(M_PI - 0.0001); } else { self.toggleButton.transform = CGAffineTransformIdentity; } [self.view setNeedsLayout]; }]; } ``` ### ポイント 回転させる時に、「M_PI - 0.0001」としていますが、これはM_PIで指定するとアニメーションさせると時計方向に回転してしまうためです。(サンプルでは反時計方向に回転させています) Objective-Cのシンタックスハイライトされるようにしないと見にくいですね。 次回は今回作ったボタンと連動して、AutoLayoutで作成したViewを開いたり閉じたりしたいと思います。

0 件のコメント :

コメントを投稿