2

ユニバーサルにしたいiPadアプリがありますが、これは驚くほど難しいようです。両方のビルドをサポートするように変更しましたが、ビルド時に UIPopOvers の使用に関する多くのエラーが発生します。ここに私の質問があります:

  • UI_USER_INTERFACE_IDIOM()3.1.3 でコンパイルまたは登録しないのはなぜですか?
  • に基づくクラス定義に条件付きで変数を含めることはできますUI_USER_INTERFACE_IDIOM()か?
  • そうでない場合、2 つの異なるビュー コントローラーを作成する必要がありますか?

ありがとう!

4

2 に答える 2

3

UI_USER_INTERFACE_IDIOM()が3.1.3でコンパイルまたは登録されないのはなぜですか?

マクロはUI_USER_INTERFACE_IDIOM3.2以降でのみ使用できます。UIDeviceuserInterfaceIdiomのプロパティに対する同じ制限。これは、SDK3.2以降でのみユニバーサルアプリケーションを入手できることを意味します。

UI_USER_INTERFACE_IDIOM()に基づくクラス定義に条件付きで変数を含めることはできますか?

いいえ。UI_USER_INTERFACE_IDIOMマクロは、デバイスの現在のUIイディオムを取得するためのランタイムショートカットにすぎません。

そうでない場合は、2つの異なるビューコントローラーを作成する必要がありますか?

2つのデバイス間でUIが大きく異なる場合は、2つの異なるビューコントローラーを使用し、UI_USER_INTERFACE_IDIOMマクロを使用して実行時に(たとえば、アプリケーションコントローラーで)適切なビューコントローラーを作成することをお勧めします。

于 2010-06-02T06:06:51.380 に答える
2

ターゲットを選択してから、[プロジェクト] -> [現在のターゲットを iPad にアップグレード] に移動するだけでかなり幸運でした。

私のアプリは非常にシンプルで、ほとんどがテーブル ビューと Web ビューで構成されていますが、バックアップを作成して試す価値はあります...

はい、3.1 を対象とする 3.2 アプリとして提出する必要があります。*

やらなければならないことは他にもたくさんあります。どの向きでも表示できることを確認してください (これは初めて拒否されました)。すべての新しいイメージが作成されていることを確認してください。iPhone アプリのように 1 つだけではなく、3 つまたは 4 つのアイコンが必要です。(iPad アイコン、iPhone アイコン、スポットライト用の小さいアイコンなど)。もちろんiPadサイズのストア用スクリーンショットも。

iPad か iPhone かをテストするために私が使用する非常に優れた方法は、デバイスが分割ビュー コントローラーを使用できるかどうかを確認することです。これは、近い将来、iPhone ほど小さな画面のデバイスで分割を使用できないためです。ビューコントローラー。私はこれを行う関数を作成しました:

+(BOOL)isIpad{ return NSClassFromString(@"UISplitViewController") != nil; }

次に、デバイスに応じて異なるものを表示したいアプリのどこでも、それをチェックするだけです:

int width = 150;
if([NabAppDelegate isIpad]){
   width = 350;
} else {
   width = 150;
}
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5,10,width,25)];

これは、私がいくつかの提案を見たように、OS のバージョンをチェックするよりもはるかに優れています。

于 2010-06-02T14:50:01.500 に答える