1

これが、複製を使用して〜ipad.xib(s)を作成し、それらをプロジェクトのバックアップに追加し直して、ユニバーサルをチェックすることにより、既存のiPhoneプロジェクトからユニバーサルアプリを作成した方法です。

ベースSDKが4.3.3、展開ターゲットが3.1.2のxcode4.02を使用しました。

  1. プロジェクト全体をどこかにバックアップします。
  2. iPhoneターゲットを右クリックして、複製を選択します。単に複製するのではなく、iPad用に複製を選択します。これにより、Resources-iPadという新しいフォルダーが作成され、その下にclassesというサブフォルダーがあり、その下にプロジェクト全体のすべてのxibファイルのコピーがあります。(面白いことに、ファインダーでこれらのファイルを見ると、xcodeウィンドウに拡張子が表示されていても.xib拡張子がありません-なぜですか?ファインダーは、とにかくそれらがxibファイルであると言っています。)
  3. この時点で、2つのターゲットがありました。これは間違っているように思われたので、ファインダーに移動して新しいResources-iPadフォルダーのバックアップコピーを作成し、プロジェクト全体を削除しました。
  4. 手順1でバックアップした元のiPhoneプロジェクトをコピーして戻します。
  5. バックアップされたResources-iPadフォルダーを追加し、iPadに適した外観になるように編集しました。
  6. これで、良さそうなターゲットが1つあり、ターゲットの概要でiPhoneではなくユニバーサルデバイスにしました。
  7. ただし、シミュレーターまたはデバイスにデプロイするときに一貫性のない動作が発生しました。明らかな理由もなく、間違ったxibが使用されることがありました。
  8. これで修正されました-xcodeのResources-iPad/classesフォルダーで、ipadのすべてのxibの名前をmynibname.xibからmynibname〜ipad.xibに変更します(前にティルダ、すべて小文字)

この方法で問題がないかどうかについてのドキュメントは見つかりませんでした。これまでのところ、これらの物理デバイスで動作します。

iPad 2 with 4.3、iPod touch v1 with 3.1.2、iPod touch v4(retina)with 4.1

これはユニバーサルアプリを作成する正しい方法ですか?私がこれを解決したので、今では十分に簡単に思えますが、この情報を見つけるのに永遠にかかりました。また、mainwindow.xibはありませんが、タブバーアプリのテーブルビューセクションヘッダーおよび詳細ビューとして他の場所に読み込まれる他のペン先があります。そのため、メインインターフェイスセクションは空白のままにしました。

ああ-私はiPad1を持っておらず、そのデバイスでテストできませんが、iPad 3.2シミュレーターでは正しく動作しないようですが、他のすべてのデバイスとシミュレーターは正常に動作しているようです。

4

1 に答える 1

2

多くの人が行っているのは、デバイスごとに2つの別々のクラスを使用することです。なんで?言えませんでした!

私がしているのは、iPadとiPhoneの両方に1つのクラスを使用することです。マクロを使用して、現在のデバイスを判別するだけです。

例えば

#define IDIOM           UI_USER_INTERFACE_IDIOM()
#define IPAD            UIUserInterfaceIdiomPad   

if (IDIOM == IPAD)
{
    /* do something specific for iPad. */
} else {
    /* do something specific for iPhone, like set up frames. */
}

もちろん、iPadバージョンのインターフェースを作成する必要がありますが、それは簡単な部分です。

ユニバーサルアプリとして識別する限り、プロジェクト設定にはオプションがあり、ビルド設定にはターゲットデバイスファミリーがあり、 iPhone/iPadに設定されていることを確認します。

ユニバーサルアプリを作成するために私が行うことはほとんどすべてであり、デバイスごとに特定のクラスを作成するので、かなり時間がかかりません。

于 2011-09-06T23:30:01.810 に答える