環境 | iOS(iPhone) SDK 4.0 |
Window-based Applicationプロジェクトを作成して、initWithNibName:bundle:を使ってUIViewControllerを追加して表示しようとすると、 以下のようにInterface Builderの表示とiPhone Simulatorの表示がStatusBarの分ずれることがあります。
Interface Builder | iPhone Simulator |
initWithNibName:bundle:を使った場合はViewの再配置をしてくれないためこうなります。
(「Resize View From NIBの意味」に分かりやすく書いてあります)
以下のように、UIViewControllerのview.frameを変更することにより、 Interface Builderの表示と合わせることができます。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // ViewControllerはUIViewControllerのSubclass、contorllerは(ViewController *)型のインスタンス変数 controller = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; controller.view.frame = [UIScreen mainScreen].applicationFrame; [window addSubview:controller.view]; [window makeKeyAndVisible]; return YES; }
Interface Builder | iPhone Simulator |
なお、UINavigationControllerを使っているときは、UINavigationControllerが勝手にViewを再配置してくれるようですので、この問題は発生しません。
投稿者 MASATO : 2010年12月04日 02:39 | トラックバック