質問

私は普遍的にしたいiPadアプリを持っていますが、これは驚くほど難しいようです。私は物事を変えて両方のビルドをサポートするように変えましたが、構築するときに、Uipopoversの使用について多くのエラーが発生します。これが私の質問です:

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

ありがとう!

役に立ちましたか?

解決

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

UI_USER_INTERFACE_IDIOM マクロは3.2からのみ利用可能です。の場合と同じ制限 userInterfaceIdiom の財産 uidevice. 。これは、SDK 3.2から始まるユニバーサルアプリケーションのみを取得できることを意味します。

ui_user_interface_idiom()に基づいて、クラス定義に条件付きで変数を持つことができますか?

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

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

2つのデバイス間でUIが非常に異なる場合、2つの異なるビューコントローラーを使用し、実行時に(たとえばアプリケーションコントローラーで)適切なView Controllerを使用することが賢明です。 UI_USER_INTERFACE_IDIOM 大きい。

他のヒント

ターゲットを選択してから、project-> iPadの現在のターゲットをアップグレードするだけで、かなり幸運でした。

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

そして、はい、3.1をターゲットにできる3.2アプリとして送信する必要があります。*

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

iPadまたは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バージョンに対してチェックするよりもはるかに優れています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top