iPadアプリをユニバーサルアプリにします
-
23-10-2019 - |
質問
私は普遍的にしたい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バージョンに対してチェックするよりもはるかに優れています。