0

私は以下のようにrootViewControllerとして割り当てられているViewControllerを持っています:

self.viewCntrl = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewCntrl;

そして、同じビューコントローラにボタンがあり、次のようにボタンクリックでトランジションアニメーションを実行しています。

[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view.superview cache:YES];

しかし、私がこのように書くとき、それは機能しません:

[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];

ここで、selfはViewControllerのオブジェクトであるため、self.window.rootViewControllerに割り当てられているだけのViewControllerです。では、なぜアニメーション化するのにself.viewではなくself.view.superviewが必要なのですか?

4

1 に答える 1

1

実行しようとしているアニメーションの種類によっては、おそらく答えはここにあります:

遷移中にビューの外観を変更する場合(たとえば、あるビューから別のビューに切り替える場合)、次のように、UIViewのインスタンスであるコンテナビューを使用します。

  1. アニメーションブロックを開始します。

  2. コンテナビューでトランジションを設定します。

  3. コンテナビューからサブビューを削除します。

  4. 新しいサブビューをコンテナビューに追加します。

  5. アニメーションブロックをコミットします。

于 2012-08-01T11:25:41.537 に答える