単純な3D変換をボタンで機能させることができないようで、ドキュメントが役に立たないようです。ビューベースのアプリケーションテンプレートから始めました。QuartzCoreフレームワークを追加し、ViewControllerヘッダーにインポートします。Interface Builderで、2つのRound Rectボタンをドラッグして、それぞれbutton1とbutton2にワイヤリングし、両方をbuttonPressed:メソッドにワイヤリングします。
コメントアウトされたアニメーションを使用してクイック実行すると、クリックされたボタンのみがラベルを変更することが確認されます。
アニメーションを元に戻すと、「sender.transform = t;」の「setTransform:」の引数1に互換性のないタイプのエラーが表示されます。line(これは固定された行で[sender.layer setTransform:t];に変更されました)
360度回転させるにはどうすればよいですか。問題は、開始状態と終了状態が同じであるため、どこを回転してもわからないことだと思います。
これが.hです(この投稿ではフォーマット上の理由でインポートを省略しました)
@interface animation2ViewController : UIViewController {
IBOutlet UIButton *button1;
IBOutlet UIButton *button2;
}
-(IBAction) buttonPressed:(UIButton *)sender;
@end
そして.mファイル
#import "animation2ViewController.h"
@implementation animation2ViewController
-(IBAction)buttonPressed:(UIButton *)sender {
[sender setTitle:@"new title" forState:UIControlStateNormal];
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationCurveEaseInOut
animations:^{
CATransform3D t = CATransform3DIdentity;
t.m34 = -1 / 1000;
t = CATransform3DRotate(t, 360 * M_PI / 180, 0.0, 1.0, 0.0); //ultimately want 360 degrees but starting here first
[sender.layer setTransform:t];
}
completion:^(BOOL finished) {
}];
}