2

いくつかのタブアイテムを持つタブバーコントローラーがあります。一部のタブ項目は、splitviewcontrollers です。向きを変更すると、splitview コントローラの左側が正しくレンダリングされず、下部に黒い四角が表示されることがあります。もう一度向きを変えると、問題は解決します。

ここに画像の説明を入力

私のコードには特別なことは何もありません。viewdidload には次のものがあります。

[self.navigationController setNavigationBarHidden:YES];
self.splitViewController.delegate = self;

そして、1 つの splitviewcontroller デリゲート メソッドが簡単に処理されます。

- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:   (UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
return NO;
}

詳細側にいくつかのセルがあるテーブルビューだけです。

4

1 に答える 1

1

私はそのような問題を見てきましたが、私が思いついた唯一の回避策は、左側のビュー コントローラーのビューとナビゲーション コントローラーのビューのサイズをリセットすることでした:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    if (self.splitViewController) {
        viewHeight = ...
        navViewHeight = ...
        CGRect viewFrame = CGRectMake(0, 0, 320, viewHeight);
        self.view.frame = viewFrame;

        CGRect navControllerViewFrame = CGRectMake(0, 0, 320, navViewHeight);
        self.navigationController.view.frame = navControllerViewFrame;
    }
}

viewHeight と navViewHeight は、現在の向きに応じて画面の高さから計算できます (didRotateFromInterfaceOrientation: が呼び出されたときに既に設定されています)。ナビゲーション バーを非表示にすると、これらの値は等しくなるはずです。

于 2013-02-06T12:02:23.600 に答える