0

私のアプリでは、このように別の画面を表示しています:

info = [[Info alloc]initWithNibName:@"Info" bundle:nil];
[self.view addSubview:info.view];

Info は UIViewController のサブクラスなので、それを作成して現在のビューのサブビューとして追加するだけです。

却下したいときは、次のようにします。

[self.view removeFromSuperview];

これが正しい方法であるかどうかはわかりませんが、昨日、アップルはビューを表示するために同じことを行う別のアプリをアプリストアに公開しました。

私の質問は、ビュー間の遷移をアニメーション化するにはどうすればよいですか? addsubview を呼び出すと、アニメーションが実行されますか?

私はこれを試しました:

        info = [[Info alloc]initWithNibName:@"Info" bundle:nil];
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1.0];
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                               forView:info.view
                                 cache:YES];
        [self.view addSubview:info.view];
        [UIView commitAnimations];

しかし、それは機能していません。これは何もしません。

4

4 に答える 4

4

ビュー階層を管理する正しい方法ではありません。これにはView Controllerメソッドを使用する必要があります(addChildViewController:& removeFromParentViewController)。次に、メソッドtransitionFromViewController:toViewController:options:animations:completion:(またはそのようなもの) を使用して、さまざまなアニメーションを実行できます。

于 2013-06-25T09:42:49.500 に答える
1

以下のコードは、navigationcontroller を使用せずに、その種のアニメーションに CATransition を使用できます。

Info *infoViewController = [[Info alloc]init];
CATransition *transition = [CATransition animation];
transition.duration = 0.50;
transition.timingFunction =
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromRight;
UIView *containerView = self.view.window;
[containerView.layer addAnimation:transition forKey:nil];
[self presentModalViewController:infoViewController animated:NO];

このように、navigationcontroller を使用せずにビューを左から右にアニメーション化できます。

于 2013-06-25T10:09:22.247 に答える