0

画面内に収まるようにテーブル ビューのフレーム サイズを適切に設定することに少し戸惑っています。

ビューコントローラー内のビューコントローラーのセットアップは次のとおりです。

  • UITabBarController
    • タブバービューコントローラーの 1 つとしての UINavigationController。タイトルバー非表示
      • ViewController - UITableView の下にいくつかのコントロールを配置するオプションが必要な場合があるため (ただし、現在のシナリオではありません)、コンテナー ビュー コントローラー
        • UITableViewController

さて、私の質問は、UITableview の適切なフレームの寸法がどうあるべきかです。ViewController の viewDidLoad メソッドで得たものを次に示します。480.0 から 49.0 (タブ バーのサイズ) を引いたものを使用しました。ただし、これにより、下部に黒いバーが残ります。20.0 では (偶然にも?) ステータス バーのサイズが変更されているように見えますが、その理由がわかりません。テーブルビューの実際のピクセル寸法は 480 ~ 49 ではないでしょうか?

// MessageTableViewController is my subclass of UITableViewController
MessagesTableViewController *vcMessagesTable = [[MessagesTableViewController alloc] init];
CGRect tableViewFrame = CGRectMake(0, 0, 320.0, 480.0 - 49.0);
[[vcMessagesTable view] setFrame:tableViewFrame];
self.tableViewController = vcMessagesTable;
[self addChildViewController:vcMessagesTable];

[[self view] addSubview:vcMessagesTable.view];        

外観は次のとおりです。

スクリーンショット

4

1 に答える 1

1

私もこの問題に遭遇しました - サイズをハードコードするのではなく、祖先のコントローラーのサイズを参照するのが最善だと思います。この場合、tabBar コントローラの直接の子である UINavigationController には、画面全体から tabBar を除いた部分を埋める適切なフレームが必要です。したがって、下部にスペースが必要な場合は、そのフレームの高さから(必要に応じて)減算します。それ以外の場合は、そのフレームを使用します。self.navigationController は、対象のコントローラーの上にある最も近いナビゲーションコントローラーを見つけると思います。

于 2012-10-20T18:57:06.503 に答える