2013年5月5日日曜日

[iOS]iOSのGUIをopenFrameworksのプロジェクトに追加する際の画面サイズの注意

openFrameworksでiPhoneアプリを開発していると、iOS標準のGUIを追加する方法で悩まされるかもしれません。

でもちょっと調べれば解決策がネット上にありました。
こちらのサイトにinterface builderを使ってGUIを追加する方法が記載されています。

ただしここで注意が必要なのはこの方法をただ適用しただけでは、iPhone4S以下向け3.5inchディスプレイとiPhone5向け4inchディスプレイの共存ができないことです。
iPhone5用に作成したviewを適用しようとするとiPhone4S以下では画面が下にはみ出してしまいます。
これはaddSubViewで追加したviewControllerのviewサイズがディスプレイのサイズによって自動で変換されないためです。

じゃあどうすればいいかというと、addSubViewでiOSのGUIを追加する直前でviewのサイズを変更してください。


      
   //iPhoneの画面サイズの取得
   CGSize addViewSize = CGSizeMake(ofGetWidth(), ofGetHeight());
        
   //iOSGUIのviewサイズをiPhoneの画像サイズに変換
   CGRect addViewRect = [xibViewController.view frame];
   addViewRect.size.width = addViewSize.width;
   addViewRect.size.height = addViewSize.height;
   [xibViewController.view setFrame:addViewRect];        
        
   //openFrameworksに追加
   [ofxiPhoneGetUIWindow() addSubview:xibViewController.view];

これでiPhone4S以下にもiPhone5にも対応できると思います。