4

アプリを iOS 6 に適応させるまで、この問題はまったくありませんでした。(dismissViewControllerAnimated:completion: を使用して) モーダル セグエから戻るたびに、メイン ビューは、ステータス バーの高さ分のオフセット (およびその後、ステータスバーの後ろに表示されます)。

私が見つけた唯一の回避策は、追加することです:

self.navigationController.view.frame = CGRectMake(0, 20, 320, 460);
self.view.frame = CGRectMake(0, 0, 320, 416);

私のdismissViewControllerAnimated:completionメソッドに(これらの値は5未満のiPhone用で、説明用です)。しかし、これで問題が解決するわけではありません。次のモーダル ビュー コントローラーを提示しようとすると、提示されたビューがステータス バーの高さ分だけ上に移動するからです。

この問題がどのように発生したかわかりません。私の疑いでは、セグエのどこかで、ナビゲーション コントローラの 1 つがステータス バーの存在を追跡できなくなっているのではないでしょうか (何らかの方法で新しいステータス バーにリンクされていますか?)。

編集: メイン ビューのスクリーンショット、モーダル解除後。[注: 下部に 20px の空白]ここに画像の説明を入力

4

3 に答える 3

13

問題を解決しました。navigationController私の習慣は ではなくsupportedInterfaceOrientations戻ってきました。UIInterfaceOrientationPortraitUIInterfaceOrientationMaskPortrait

于 2012-09-24T15:01:39.140 に答える
0

rootViewControllerと同じカスタムnavigationControllerを使用した構造を使用しているにもかかわらず、この回答は機能しませんでした。私のアプリでは、モーダル(UIInterfaceOrientationMaskAll)を除くすべてのVCでポートレートにする必要があります。

うまくいったのは、iPhone4とiPhone5の画面サイズとnavBarの高さを考慮に入れることを除いて、回避策のバリエーションでした。

[yourParentVC dismissViewControllerAnimated:NO completion:^{

    [yourParentVC.view setFrame:CGRectMake(0, 0, [UIScreen mainScreen].applicationFrame.size.width, [UIScreen mainScreen].applicationFrame.size.height-44)];
    //your other completion code
}];

この質問をするための+1...iOS 6のすべての非推奨を説明している作業の量に満足していないので、少しでも役に立ちます。

于 2013-03-19T19:54:44.210 に答える