1

私はコンテインメントを持ってUIViewControllerおり、私のviewDidLoadメソッドでは、ストーリーボードからその子ビュー コントローラーをロードしています。次に、子ビュー コントローラー ビューをサブ ビューとして追加し、この新しいビュー サイズを設定しようとします。

  childVC.view.frame=CGRectMake(0,0,768,1004);

アプリをランドスケープ モードで起動すると、左側 (物理デバイスの底面) に 20 ピクセルの「ギャップ」ができます。コードでデバイスの向きを取得して使用すると、これを回避できます

  CGRectMake(0,0,748,1024);

ランドスケープが検出された場合は、代わりにフレーム プロパティに対して。ただし、別の解決策が必要だと思います。

質問が出る前に: この問題が解決したら、0,0 以外の場所にビューを配置する必要があるため、bounds プロパティの代わりにフレームを設定します。私の知る限り、これを行う他の方法はありませんよね?

4

1 に答える 1

4

親ビューの境界に基づいて子ビューのフレームを設定します。次に、子ビューの自動サイズ変更マスクが「柔軟な幅」と「柔軟な高さ」の両方に設定されていることを確認します。あなたのようにサイズをハードコーディングしないでください。

childVC.view.frame = parentVC.view.bounds;
childVC.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

これが機能したら、必要に応じて子ビューのフレームを微調整できます。ただし、それでも親ビューの境界に基づく必要があります。

于 2013-03-21T20:50:11.240 に答える