5

単純な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) {

                     }];

}
4

2 に答える 2

2

M_PIは180°の回転であるため、360°の90倍を実行します。 レイヤーを変換できるので 、セッターエラーを試し
てみてくださいt = CATransform3DRotate(t, M_PI, 0.0, 1.0, 0.0);
[sender.layer setTransform:t];

そして最後に、最後にアニメーションをコミットする必要があります。そうしないと、アニメーション化されません
[UIView commitAnimations];

于 2011-03-02T18:15:54.383 に答える
1

これを試して :

  1. 回転1/3 of a full rotation
  2. アニメーションを実行する

投稿が1年以上前のものであることがわかりましたが、同じ質問がある人は、うまくいくように試してみてください.

于 2012-07-21T18:57:01.023 に答える