SysStats Monitorのユニバーサル化を試してみました

iPadでは、従来の多くのiPhoneアプリを、そのまま何も手を加えずに動かすことできますが、iPad向けに作られたものと比べると、見劣りするというのが事実です。SysStats Monitorも、残念ながら、現時点ではその状態にあります。
iPadへの本格対応をする場合、当然のことながら、今のアプリをベースに作り込んで行くことになります。iPadが日本で発売されてから、すでに3週間経ってしまい、今さら感もありますが、まずは試しにアプリのプロジェクトをiPad対応(ユニバーサルバイナリ)にしてみたので、そのときのことを、メモを兼ねて、簡単にまとめてみました。

iPhone SDK3.2で実施したので、4.0には当てはまらない部分があることをご了承ください。

参考文献

当然ながら、iPad Programing GuideのStarting Your Project → Creating a Universal Applicationを参考にしました。 iOS Developer Library

ビルドターゲットをiPad用にアップグレード

iPad対応にするためのアップグレードは、ビルドターゲットごとに行うようになっている。まずは、プロジェクトの中の、ユニバーサル化したいターゲットを選択し、コンテキストメニューを開き、「現在のターゲットをiPad用にアップグレード...」を選択する。

以下のパネルが開くので、アップグレード方式を選択する。

ユニバーサル化の場合は、「One Universal application」が選択されていることを確認し、OKをクリック。

自動的に変更された項目

ここまでの作業で、自動的に変更されたのは、以下の項目でした。

ターゲットのプロパティ
  • Deployment

[変更前]

[変更後]

[変更前]

[変更後]

Info.plist

以下のように、Main nib file base name (iPad)というキーが追加される。
*1

グループの追加

Resources-iPadというグループが追加される。

とりあえず動かすためにやるべきこと

動く状態にするには、必要に応じて、以下のことを手作業で行います。

iPhone OS Deployment Targetの調整

iPhoneアプリケーションが3.1.3以前をベースとする場合は、iPhone OS Deployment Targetを、対応するバージョンに戻してやる必要がある。

この設定によって、アクティブSDKとして、3.1.3を選択できるようになる。
*2

iPad用のMain nibファイルを作成

Main nibファイルは自動生成されないので、自分で用意する必要がある。
今回のケースでは、元のiPhoneアプリのMain nibファイルをInterfaceBuilderで開き、「Create iPad Version」を選択することで、iPadサイズのWindowに変化されたnibファイルを生成した。

そのnibファイルを保存し、プロジェクトのResources-iPadの下に配置する。

アプリの実行

アクティブSDKを3.2に設定すればiPadアプリ、3.1.3に設定すればiPhoneアプリとして実行される。

実行してみた結果は。。

以下は、とりあえずiPadアプリとして実行したときのスナップショットです。

このような標準のUITableViewのみで構成されている画面は、自動的にリサイズされ、それなりに表示してくれます。
もう一つ見てみましょう。

こちらの画面は、元々ビューを固定された位置とサイズで配置しています。自動変換はされないので、iPadに最適なレイアウトになるよう調整することが必要です。

何となく感じがわかって来たので、遅ればせながら、iPad対応を本格的に検討してみようと思います。

*1:SDK3.2では、nibファイル自体は自動で生成されないので、自分で作る必要があります。

*2:SDK3.2では、これをやらないと、iPhoneアプリとしてiPhoneシミュレータで実行することができなくなってしまいます。