4

私は iOS UIViewController の詳細な実装に慣れていません。新しい UIViewController を作成して表示する次のコードがありますが、initWithFrameメソッドで設定したフレームが機能せず、コントローラーのビューは常にフルスクリーン (320*480) です。

UIViewController *viewController = [[UIViewController alloc] init];

// view
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 140, 130)];
viewController.view = view;
[view release];
AppController *app = (AppController*)[[UIApplication sharedApplication] delegate];

UINavigationController *nav = [app navController];
[nav pushViewController:viewController animated:YES];
 [viewController release];

Apple 開発者ドキュメントで関連する考えを検索しましたが、これに役立つものは何も見つかりませんでした。UIViewController はビュー フレーム プロパティを表示する前にどのように処理しましたか? 役立つドキュメントはどこにありますか。

ありがとうございました。


更新: 実際、コードは cocos2d-iphone DirectorTest からのものです: https://github.com/cocos2d/cocos2d-iphone/blob/release-2.0-rc1/tests/DirectorTest.m#L143

4

1 に答える 1

6

これはすべて間違っています - Apple のUIViewControllerドキュメントを読む (そして理解する) 必要があります:

コントローラ カタログを表示

コントローラープログラミングガイドを見る

ビュー コントローラーのリファレンス

ビュー コントローラーのコードでビューを作成する場合は、ビュー コントローラーのloadViewメソッドで作成する必要があります。

Appleのドキュメントから直接:

プログラムによるビューの作成

プログラムでビューを作成したい 場合は、View Controller の loadView メソッドをオーバーライドして作成します。このメソッドの実装では、次のことを行う必要があります。

ルート ビュー オブジェクトを作成します。ルート ビューには、View Controller に関連付けられた他のすべてのビューが含まれます。通常、このビューのフレームはアプリ ウィンドウのサイズに合わせて定義し、それ自体が画面全体を占めるようにします。ただし、View Controller の表示方法に基づいてフレームが調整されます。「View Controller ビューのサイズ変更」を参照してください。</p>

汎用の UIView オブジェクト、定義したカスタム ビュー、または画面いっぱいに拡大縮小できるその他のビューを使用できます。

追加のサブビューを作成し、ルート ビューに追加します。ビューごとに、次の操作を行う必要があります。

ビューを作成して初期化します。システム ビューの場合、通常は initWithFrame: メソッドを使用して、ビューの初期サイズと位置を指定します。addSubview: メソッドを使用して、ビューを親ビューに追加します。ルート ビューをビュー コントローラーのビュー プロパティに割り当てます。

于 2012-05-30T16:30:59.150 に答える