37

「LoginViewController」という名前のログイン ページがあります。このページに情報ボタンがあります。それをクリックすると、アプリケーションに関する情報を表示したいと思います。また、フリップアニメーションを使用してその情報ページを表示したいと考えています。

情報ボタンを作成するコードは、

infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
infoButton.frame = CGRectMake(285, 425, 30, 30);
infoButton.backgroundColor = [UIColor clearColor];

[infoButton addTarget:self 
            action:@selector(displayInfoView) 
            forControlEvents:UIControlEventTouchUpInside];

情報ボタンをクリックすると、displayInfoViewメソッドが呼び出されます。そこで、UIViewいくつかの情報を表示するために を表示できます。私は正しいですか?

フリップアニメーションには、このコードを使用しました...

[UIView beginAnimations:nil context:NULL];

[UIView setAnimationDuration:.8];

[UIView setAnimationTransition:([loginPageView superview] ? UIViewAnimationTransitionFlipFromLeft : UIViewAnimationTransitionFlipFromRight) 
        forView:mainView
        cache:YES]; 

if ([infoView superview]) {
    [infoView removeFromSuperview];
    [mainView addSubview:loginPageView];
}
else {
    [loginPageView removeFromSuperview];
    [mainView addSubview:infoView];
}

[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[UIView commitAnimations];

これloginPageViewは、情報ボタンを含むログイン ビューです。infoViewアプリケーションに関する情報を含むビューです。mainView現在のビューを保持する共通のビューです。

今私の問題は、を表示する代わりにUIView、情報ボタンをクリックしているときに別のView Controllerクラスを表示できますか? フリップ アクションは で正常に機能することを覚えておいてくださいUIView。しかし、 を試してみるとUIViewController、これが問題になります。

AboutViewControllerフリップ効果で情報ボタンをクリックしているときに UIViewController (私のアプリでは、表示する必要があります) を表示する方法を誰かが提案できますか?

4

5 に答える 5

128

ビュー コントローラに切り替えるには:

viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:viewController animated:YES completion:nil];

それからフリップするには:

[self dismissViewControllerAnimated:YES completion:nil];
于 2011-09-12T08:13:08.703 に答える
21

これが私がやっている方法です:

 AboutShowViewController *aboutShowViewController = [[AboutShowViewController alloc] initWithNibName:@"AboutShowViewController" bundle:[NSBundle mainBundle]];

    [UIView beginAnimations:@"View Flip" context:nil];
    [UIView setAnimationDuration:0.80];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight 
                           forView:self.navigationController.view cache:NO];

    [self.navigationController pushViewController:aboutShowViewController animated:YES];
    [UIView commitAnimations];

    [aboutShowViewController release];

クレジットはここでfaysarに行きます。

于 2011-07-13T02:45:54.597 に答える
5

Cocoa Touch の MVC 構造の理解には根本的な欠陥があります。つまり、View ControllerViewは比較可能で類似しています。真実は、そうではありません。

特定の質問に戻ります。はい、アニメーションはビュー コントローラーではなくビューに基づいています。ただし、各ビューはいずれかのビュー コントローラーで制御する必要があります。そして、どのビューがどのコントローラーに属しているかは、完全にあなた次第です。あなたの場合、アニメーションは、2 つの異なるコントローラーを持つ 2 つのビュー間で発生する可能性があります。または、同じコントローラーの 2 つのビュー間でも発生する可能性があります。

コード サンプルについては、Xcode の既定のテンプレートの 1 つであるUtility Applicationを参照することをお勧めします。これは、このクリック アンド フリップ アニメーションを簡潔かつ標準化された方法で実装しています。

于 2011-01-07T06:29:30.613 に答える