ユニバーサルアプリにしてiPadに入れてみた。
iPad対応
このサイトが参考になった。
3時間でiPhoneアプリをiPad対応にした : 管理人@Yoski
以下、記録。
1. ターゲットを iPad用にアップグレード
ターゲット上で右クリックして「現在のターゲットを iPad 用にアップグレード...」を選ぶ。
ユニバーサルアプリ(1つでiPhone/iPadに対応)にするのか、デバイス毎に別々のアプリとするのかを聞かれる。今回は「One Universal application」を選択。
すると "Resource-iPad" というグループが作成された。ただ中身は何も入っていなかった。
2. XIBを iPad用に作成
EasyGallery では2つのXcodeが作成した2つの XIBファイルを使っている。
MainWindow.xib EasyGalleryViewController.xibこれらを iPad用に新規に作成する。
まず MainWindow.xib から。InterfaceBuilderでファイルを開いた後、「File」メニューから「Create iPad Version」を選択する。
すると MainWindow.xib をコピーした新しい XIBファイルが生成される。
名前を MainWindow-iPad.xib として保存する。この名前は Info.plist の設定と一致させておく必要がある。1. でターゲットをアップグレードした時に Info.plist にはデフォルトで "Main nib file base name (iPad)" が追加されている。値は "MainWindow-iPad"。
同様にして EasyGalleryViewController.xib も iPad用に新規作成する。名前は後ろに "-iPad" をつけて EasyGalleryViewController-iPad.xib とした。
なお「File」メニューで「Create iPad Version Using Autoresizing Masks」を選ぶと、Autoresizing Masksが iPad用に自動的に摘要される。大抵の場合、ビューのサイズを iPad用に拡大するのでこれは便利。
これで完了。
実機で実行
あっさり動いた。
横にすればちゃんと回転する。拡大時の回転も問題なし。
これはちょっと嬉しい。
その他
EasyGalleryViewController-iPad.xib はソースコード上に名前が現れない。また新規に作った MainWindow-iPad.xib の NIB Name は "EasyGalleryViewController" のまま。
10/8追記)iPhone用の XIBが使われていたことが判明。やっぱりこの設定を変える必要がある。
ソースコード
GitHubからどうぞ。
EasyGallery at 2010-09-20 from xcatsan's iOS-Sample-Code - GitHub
- - - -
わかってはいたけれど同じソースで iPhone/iPad 両方が動くのはすごいな。実際にアプリを作るときには作業量が増えるので大変だとは思うけれど。
匿名
2011年8月19日 13:37
初めまして。UIScrollViewの勉強がしたくてここにたどり着きました。拝見させていただいたものを自分で書いてみているのですが、試しにUISplitViewの右ペインDetailViewに入れてみたところ、landscape時になぜか画像が「上へずれて」しまいます。UIScrolViewのFrameの設定なんだと思うんですが。。アドバイスいただけませんでしょうか?
匿名
2011年8月19日 13:37
初めまして。UIScrollViewの勉強がしたくてここにたどり着きました。拝見させていただいたものを自分で書いてみているのですが、試しにUISplitViewの右ペインDetailViewに入れてみたところ、landscape時になぜか画像が「上へずれて」しまいます。UIScrolViewのFrameの設定なんだと思うんですが。。アドバイスいただけませんでしょうか?
xcatsan says:
2011年8月20日 7:10
おはようございます。landscape 時の表示位置のずれは、たぶん指摘の通り UIScrollView の設定に原因があります。これは回転して landscape にした時に UIScrollView の Frame および contentSize が回転前の状態のままだからです。つまり portlate の 縦長の長方形に合わせた Frame/contentSize のまま landscape を表示しようとしているためにズレます。これを解消するには画面の向きに応じて Frame/contentSize を設定してやる必要があります。
下記に図があるので参考にしてみてください。
http://cocoadays.blogspot.com/2010/09/4.html
参考になればと思います。
では。
xcatsan says:
2011年8月20日 7:10
おはようございます。landscape 時の表示位置のずれは、たぶん指摘の通り UIScrollView の設定に原因があります。これは回転して landscape にした時に UIScrollView の Frame および contentSize が回転前の状態のままだからです。つまり portlate の 縦長の長方形に合わせた Frame/contentSize のまま landscape を表示しようとしているためにズレます。これを解消するには画面の向きに応じて Frame/contentSize を設定してやる必要があります。
下記に図があるので参考にしてみてください。
http://cocoadays.blogspot.com/2010/09/4.html
参考になればと思います。
では。
匿名
2011年8月29日 12:05
アドバイスいただきありがとうございます。以前コメント欄にて質問させていただいたものです。
FrameやcontetntSizeを変更しても、どうにもうまくいきませんでした。
実は、nibファイル無しでソースを作成していたのですが、nibファイルを作成して、UIScrollViewを置き、portlaitとlandscapeの双方の設定(というかUIScrollViewの位置)をきちんとおいてやることでうまく動きました。
ありがとうございました(__)
匿名
2011年8月29日 12:05
アドバイスいただきありがとうございます。以前コメント欄にて質問させていただいたものです。
FrameやcontetntSizeを変更しても、どうにもうまくいきませんでした。
実は、nibファイル無しでソースを作成していたのですが、nibファイルを作成して、UIScrollViewを置き、portlaitとlandscapeの双方の設定(というかUIScrollViewの位置)をきちんとおいてやることでうまく動きました。
ありがとうございました(__)
xcatsan says:
2011年9月1日 0:01
こんばんは。
あまりお役に立てなかったようですね ;;;
でも解決できたようで何よりです。
ではでは。
xcatsan says:
2011年9月1日 0:01
こんばんは。
あまりお役に立てなかったようですね ;;;
でも解決できたようで何よりです。
ではでは。