UIViewAnimationTransitionFlipの使用中に表示エラーが発生する

iphone objective-c uiview

私は2つのビュー、1つのログインと別の家を持っています。 ログインビューでサインインボタンをクリックすると、ログインに成功すると、ユーザーはホームビューにリダイレクトされます。 これを実現するためにフリップ遷移が実装されています。 問題は、反転が発生した後、ホームビューのレイアウトが正しく表示されないことです。 ビューはホームビューの下部に余白を残して少し上にドラッグしているように見えます。つまり、ホームビューの内容は反転後は正しく収まりません。 これはログイン成功時に呼び出されるメソッドです:

 - (void)displayHome {if(loginController == nil){[セルフロードホーム]; }
[UIView beginAnimations:nil context:NULL]
;
[UIView setAnimationDuration:1]
;
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES]
;
[homeController viewWillAppear:YES]
;
[loginController viewWillDisappear:YES]
;
[loginController.view removeFromSuperview]
;
[self.view addSubview:homeController.view]
;
[loginController viewDidDisappear:YES]
;
[homeController viewDidAppear:YES]
;
[UIView commitAnimations]
; }

 - (無効)ロードホーム{

HomeController * hm = [[HomeControllerの割り当て] initWithNibName:@ "Home"バンドル:nil]; self.homeController = hm;
[hm release]
; }

ビューの内容を正しく表示する方法について何かアイデアはありますか?

ありがとう

  1  2


ベストアンサー

viewWillAppearなどを手動で呼び出す必要があるとは思わない。 手動で、私はそれらがすべて自動的に呼び出されると思います。 それで、それらはおそらく二度呼ばれていて、それは表示/位置決めエラーを引き起こすかもしれません?

特に、UINavigationControllerを継承している場合は、homeControllerでpresentModalViewControllerを呼び出してログインコントローラーを表示するのがより簡単な(そしてもっといいと思う)アプローチが簡単です。 Apple提供のナビゲーションベースのアプリはどれもAFAIKをひっくり返さない。

0


次のようにviewDid \ {Appear / Disappear}呼び出しをanimationDidStopデリゲートメソッドに移動することを検討してください。

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

-  (void)animationDidStop:(NSString *)animationID終了:(NSNumber *)終了コンテキスト:(void *)コンテキスト{[loginController viewDidDisappear:YES]; [homeController viewDidAppear:YES]; }

これであなたの問題が解決するとは思わない(viewDidAppearメソッドで何らかのレイアウトをしているのでない限り)。 しかし、少なくともあなたのView ControllerのviewDidAppear / viewDidDisappearメソッドは正しい時に呼び出されるでしょう(アニメーションが始まったばかりでなく、終わった時)。

0


タイトルとURLをコピーしました