1

ビューコントローラーがあり、別のビューを作成して、結果のビューをサブビューに追加しています。しかし問題は、ビューがフレーム (0, 0, 0, 0) で作成されていることです。

フレームを手動で設定しても問題ありませんが、フレームを手動で設定したくないので、自動サイズ変更が必要です。コードは次のとおりです。

GridViewController *gridVC = [[GridViewController alloc] initWithNibName:@"GridView" bundle:nil];
[self addChildViewController:gridVC];
[self.view addSubview:gridVC.view];

self.view通常のフレームをgridVc.view持ち、(0,0,0,0) フレームを持ちます。

xib にはいくつかのビューがあり、ビューが正しく接続され、ファイル所有者が正しく設定され、すべてが適切に表示されます。

4

1 に答える 1

1

このようなView Controllerの封じ込めを行うとき(ところで、そこにもあなたのdidMoveToParentViewController呼び出しがあることを願っています)、私は常に設定しますframe、例えば

gridVC.view.frame = self.view.bounds;

確かに、画面全体を占有しないコンテナに子ビューを追加することがよくあります。そのため、その状況では重要ですが、それでも、frame.

これを行うと、自動サイズ変更マスクを適切に設定すると、すべてが適切に自動的にサイズ変更されます。

参考までに、Apple はframeサンプル コードで子のビューを追加するときにも設定します (リスト 14-1を参照)。

明らかに、自動レイアウトを使用する場合は、制約を設定する (または を使用するtranslatesAutoresizingMaskIntoConstraints) ことになりますが、考え方は同じです。

于 2013-04-24T18:16:25.507 に答える