0

の中にviewControllerがありnavigationController、ビューコントローラーにはテーブルビューがあります。
私はviewDidLoadテーブルビューを設定しました

- (void)viewDidLoad
{
    [super viewDidLoad];

    // init tableView
    CGRect tableFrame = self.view.bounds;

    _tableView = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStylePlain];

    _tableView.delegate = self;
    _tableView.dataSource = self;

    [self.view addSubview:_tableView];
}

このコードの問題は、テーブル ビュー フレームが正しくないことです。高さが 460 で、416 にする必要があります。

[iPhone の画面の高さは 480、ステータス バー (20) からナビゲーション バー (44) を引く = 416]

では、テーブルビューを設定して画面いっぱいに表示する適切な方法は何ですか?
次の 2 つの方法が考えられます。

  1. そのフレームを = に設定します(0, 0, 320, 416)

  2. 使用する:[_tableView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];

4

2 に答える 2

6

マジックナンバーは使用しないでください。サイズ変更フラグを正しく使用してください。そうです、あなたのアプローチは正しいです。

1)スーパービューの境界を使用します。
_tableView.frame = self.view.bounds;;

2)自動サイズ変更フラグを設定します
[_tableView setAutoresizingMask: UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];

(あなたはすでにこれをすべてやりました:)

于 2012-06-04T14:06:02.230 に答える
6

ナンバー1はそれを行うための絶対に間違った方法です...将来のOS/デバイスで画面サイズが変更された場合はどうなりますか?

なぜnibファイルを使用してこれを行わず、手間を省くことができるのか不思議ですが、コードで行う必要がある場合は、オプション2に従って自動サイズ変更マスクを設定してください。

于 2012-06-04T14:07:19.867 に答える