16

私はiOS開発に飛び込んでおり、iPhone専用アプリに変わるユニバーサルアプリを作成しました。iPadで実行すると、iPadコードがまだ記述されていないため、白い画面が読み込まれます。私が欲しいのは、それがどういうわけかiPadで終わった場合、iPadで「iPhone」モードで実行することです。「TargetedDeviceFamily」プロパティを「iPhone」に設定しているので、App StoreにiPadアプリとして表示されないようにする必要がありますが、iPadとiPhoneの両方を所有している場合、アプリが同期される可能性がありますiPadに送信します。この時点で、サポートするコードがないiPadモードでアプリを実行しようとするため、白い画面が読み込まれます。この状況では、実際にはiPadで実行することをお勧めしますが、iPhoneモードで実行します。

私の質問は...

  1. iPadがユニバーサルアプリを実行する場合、「iPhoneモード」で実行するか、iPad固有のコードを実行するかをどのようにして知ることができますか?
  2. ユニバーサルアプリでは、どのコードがiPhoneで、どのコードがiPadであるかをどのようにして知ることができますか?
  3. iPadがiPadコードを実行しようとするのを防ぎ、代わりにiPhoneコードを実行するにはどうすればよいですか?

完全な初心者のように聞こえたらお詫びしますが、私はそうです。あなたの知恵をどうもありがとう!

4

9 に答える 9

16
  1. iPadは、アプリケーションのInfo.plistを調べて、配列であるUIDeviceFamilyキーを探します。値「1」はiPhone/iPod Touchを示し、「2」は「iPad」を示します。「1」はあるが「2」がない場合は、シミュレートされたiPhone環境を取得します。この値は、「ターゲットデバイスファミリ」の結果として自動的にInfo.plistに書き込まれます。iPhoneに設定しても、iPadビルドを取得していると思われる場合は、1つのビルド構成に設定しただけではないことを確認してください。本当に自信が必要な場合は、作成したアプリバンドル内のInfo.plistを確認してください。
  2. どちらのデバイスでも正しく起動するために作成するバイナリは1つだけです。
  3. iPadをターゲットにしないでください。
于 2011-02-07T17:05:01.213 に答える
9

あなたが実際に望んでいるのは、「ユニバーサル」機能を削除して、それをiPhoneアプリにすることだと思います。

Xcodeで、[プロジェクト]=>[プロジェクト設定の編集]=>[ビルド]に移動します。

ユニバーサル、または「ターゲットデバイスファミリ」を検索します。

iPhoneを選びます。

さようならiPad。

于 2011-02-07T16:59:11.567 に答える
2

iPadがユニバーサルアプリを実行する場合、「iPhoneモード」で実行するか、iPad固有のコードを実行するかをどのようにして知ることができますか?

iPadはを探しますTargeted Device Family。iPadが存在しない場合は、iPhoneモードでアプリを実行する必要があることを認識しています。

ユニバーサルアプリでは、どのコードがiPhoneで、どのコードがiPadであるかをどのようにして知ることができますか?

アプリのコードを作成するときに、デバイスごとに実行する必要がある特定のことがある場合は、ターゲットとするデバイスを指定する必要があります。(以下のコード例を参照してください)

iPadがiPadコードを実行しようとするのを防ぎ、代わりにiPhoneコードを実行するにはどうすればよいですか?

でiPadをサポートしないでくださいTargeted Device Family。次に、コードで、特定のコードに特定のデバイスが必要であることを指定しないでください。次に例を示します。

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{
    /* run something specific for the iPad */
} 
else
{
    /* run something specific for the iPhone */
}
于 2011-02-07T17:08:00.797 に答える
1
  1. ユニバーサルアプリを作成すると、iPadコードが使用されます。「iPhoneモード」でユニバーサルアプリを実行することはできません。Appleは、iPadの設計仕様に従っていることを確認します。

  2. ユニバーサルアプリには、AppDelegate_iPhone.hとAppDelegate_iPad.hの2つのアプリデリゲートがあります。

  3. AppDelegate_iPadにiPhoneコードを追加することはできますが、Appleは喜ばないでしょう。

于 2011-02-07T17:02:14.350 に答える
1

これをInfo.plistファイルに追加しないでください。代わりに、Appleの提案に従ってビルド設定に追加してください。具体的には、TARGETED_DEVICE_FAMILYビルド設定を使用します。

ストーリーボードを使用している場合は、TARGETED_DEVICE_FAMILYの設定に関係なく使用されるため、Info.plistからUIMainStoryboardFile〜ipadキーも削除する必要があります。

幸運を!

于 2012-07-29T20:09:45.873 に答える
0

各デバイスのinfo.plistファイルに、ロードするメインウィンドウを示すエントリがあると思います。たぶん、手っ取り早い解決策は、MainWindow-iPhoneとMainWindow-iPadの両方を同じ-iPhone-メインウィンドウに設定することでしょう。

于 2011-02-07T17:01:53.730 に答える
0

(コードを使用して)それを行う別の方法は次のとおりです。

アプリのAppDelegate(アプリがユニバーサルアプリとして作成された場合)には、次のコードがあります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{   
    // Override point for customization after application launch.
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        //iPad...

    } else {
        //iPhone and iPod Touch...

    }

    return YES;
}

そこで、表示するビューをカスタマイズできます。

于 2012-03-09T18:22:32.710 に答える
0

以来Xcode 5、プロジェクトから開発対象デバイスを選択できます。

内のデバイスセクションからDevelopment Info、次を選択できるようになりました。

1-iPhone2-iPad3-ユニバーサル

ここに画像の説明を入力してください

于 2014-03-06T14:06:38.597 に答える
0

iPhone専用デバイスのコードをターゲットにすると、アプリはiPhone用に設計された画面でiPad上で実行可能になるため、構成に問題があると思います(つまり、縮小され、x2になる可能性があります)。

  • AppStore(iPhone / iPad /両方)からの提案は、ユーザーの好みによって異なります
  • シミュレーターで実験することができます(そしてデバイスとしてiPadを選択します)
  • コードはiPad/iPhoneでも同じです![[UIDevice currentDevice] userInterfaceIdiom] ...上記を使用しない限り...
于 2017-10-30T15:06:45.500 に答える