押された時に回転して、 元に戻るUIButtonの作り方です。
UIButtonを回転させたかったのですがUIButtonのカスタムが必要かと思っていましたが、 UIButtonをカスタムしなくても実現できました。
ボタンを回転させる方法
ボタンが押されたタイミングでtransformに値を設定します。
ボタンを元に戻したい時には、transformにCGAffineTransformIdentityを設定します。
半回転させるサンプル
1 2 3 4 5 | // 半回転させる self .toggleButton.transform = CGAffineTransformMakeRotation (M_PI); // 元に戻す self .toggleButton.transform = CGAffineTransformIdentity ; |
transformを使うことで、簡単にボタンを回転させることができました。
今回はこれを使って、押されたらボタンが時計方向に半回転して、もう一回押したら元に戻るようなサンプルを作成しました。
アニメーションして回転させるサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 | - ( 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 件のコメント :
コメントを投稿