押された時に回転して、 元に戻る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 件のコメント :
コメントを投稿