質問

私は(iPhone 3.0で)autoresizeMaskを用いて適切にサイズ変更されていないのUITableViewを有している。

のUITableViewは、プログラム的に作成されているすべてがUITabBarController内部UINavigationController、内部のUIViewController内にあります。ステータスバーが表示されます。

のUIViewControllerのコードは基本的に

- (void)loadView {
    UIView* rootView = [[UIView alloc] init];
    self.view = rootView;
    [rootView release]; 
}

- (void)viewDidLoad {
    [super viewDidLoad];

    // table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480-20-49-44)];
    table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; table.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:table];
}

このように作成すると、のUITableViewは使用可能なスペースよりも少し大きいです。私は間違っていない場合、それは、ナビゲーションバーのサイズを正確に44ピクセル大きいです。

私は次の行をコメント行のコメントを解除し、コメントする場合は、

しかし、のUITableViewのサイズは正確に正しいです。私は手動でのUITableViewのサイズを計算するのではなく、autoresizingMaskを使用することを好むだろう。私が間違って何をしているのですか?

事前にありがとうございます!

役に立ちましたか?

解決

問題は、私はloadViewメソッドでルートビューの枠を設定していませんでしたということのようです。あなたは、このようなフレームを定義し、そのフレームに関連してサブビューのフレームを定義する場合は、自動サイズ変更マスクが正しくルートビューはフレームワークによってリサイズされた方法に応じてサブビューのサイズを変更します。

- (void)loadView {
    UIView* rootView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    self.view = rootView;
    [rootView release]; 
}

- (void)viewDidLoad {
    [super viewDidLoad];

    table = [[UITableView alloc] initWithFrame:self.view.frame]; 
    table.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:table];
}

正しい方向に私を指摘コリンGislasonに感謝します。

他のヒント

自動サイズ変更マスクは、テーブルビューの初期サイズであなたを助けにはなりません。テーブルビューは、あなたがそれを与えるフレームを使用して作成されます。自動サイズ変更マスクは、親ビューに対するこのフレームの相対サイズを変更するための規則を定義するとき、親のフレームが変更

私は320×100で、テーブルを定義する場合、私は親ビューのフレームの変更を明示的に変更したりしない限り、それは、そのサイズが滞在するようにします。

他のビューに応じて、親または親のフレーム自体が保持している他のビューに基づいて計算を行うことができます。

のUITableViewControllerサブクラスののUIViewControllerサブクラスinstandを作成します。

のUITableViewのインスタンスを挿入します。

NIBで単にのUIViewをドラッグ&ドロップ

そのwier場所の上に既存のUITableViewオブジェクトます。

ニブまたはviewDidLoadメソッドを介してのUITableViewのサイズを設定します。

ペン先を介して基準、データソースとデリゲートを設定します。

現在、単にのUIViewControllerクラスを転送し、あなたが望むようにテーブルビューのサイズを変更することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top