30

XCode 4.6.3 でアプリをコンパイルし、iOS 7 で実行するとうまくいきます。

私のアプリを XCode 5 でコンパイルして iOS 7 で実行すると、今は処理したくない大きな UI の混乱が生じます。(iOS 7 のピッカー、タブバー、テーブルビューなど)

ゴール:

XCode 5 を使用して iOS 7 シミュレーターでアプリをテストできるようにしたいのですが、それでも iOS 6 以下の UI と感触を使用したいと考えています。

理由:

アプリを iOS 7 用に再設計したくはありませんが、XCode 5 iOS 7 シミュレーターを使用して iOS 7 で正常に動作することを確認したいと考えています。

XCode 5 に、すべてを同じままにするためのクイック トグルはありますか?

XCode 5 で iOS 6 Base SDK を使用するようなことは許容されるのでしょうか、それとも少しハックすぎますか?

編集:

iOS 6 SDK を使用しても役に立ちません。アプリの外観は引き続き iOS 7 のままですが、バグが増えるだけです。

4

13 に答える 13

16

これはシナリオです:

  • アプリは iOS 6 以前で正常に動作します
  • iOS 7 でアプリをテストしたい
  • デバイスに iOS 7 がある場合、テストするには XCode 5 が必要です。
  • iOS 7 シミュレーターでテストする場合は、XCode 5 をインストールする必要があります。
  • 動作中のアプリを XCode 5 でコンパイルすると、すべてが崩壊し、少なくとも iOS 7 用にアプリを再設計する必要があります。
  • これまでに提案されたソリューションは、iOS 7 でアプリがどのように見えるかを確認するのに役立ちますが、iOS 6 以下の外観を iOS 7 で維持することはできません。

これまでに見つけた最良の解決策:

  1. 現在の XCode を XCode 5 に更新する
  2. ここから XCode 4.6.3 をダウンロードします。
  3. 別の場所にインストールし、アプリの名前を XCode4 に変更して、2 つを区別します。
  4. XCode 5 アプリのアイコンを見つけて右クリックし、[パッケージの内容を表示] を選択します。
  5. MacOS フォルダーを見つけて、xcode ファイルをそのフォルダーの外に移動します。これらの最後の 2 つの手順は、誤って XCode 5 でプロジェクトを開くことを防ぐためのものです。別の方法として、デフォルトの「Open With」アプリを変更することもできますが、何らかの理由でそれがうまくいかなかったことに加えて、1 つ取得した後にさらに確実にしたかったのです。プロジェクトは XCode 5 で開き、StoryBoard は XCode 5 のみと互換性を持つように変更されました。*
  6. XCode 4.6.3 を開き、プロジェクトを実行します。XCode のトップ バーにAppName->iPhone 6.1 Simulatorが表示されていても、シミュレーターで iOS 7 を選択すると iOS 7 でアプリが実行され、すべてが同じままになります。

上記の後、2 つのバージョンの iOS シミュレーターが作成されます。iOS 7 シミュレーターを含むバージョン 6 およびバージョン 7。

ステップ 5:

ここに画像の説明を入力

于 2013-09-23T08:07:55.077 に答える
4

これは、iOS 7 シミュレーターでは実行できません。これは、iOS 6 シミュレーター (Xcode 5 で実行) とデバイス (iOS 6 SDK でビルドする限り iOS 7 を実行) で実行できます。ただし、iOS 7 シミュレーターには iOS 6 互換モードはありません。

iOS 6 互換モードは、iOS 6 の完全な複製ではないことに注意してください。テストして対処する必要があるさまざまな動作の違いがまだあります。しかし、基本的な UI コンポーネントは期待どおりです。

于 2013-09-22T22:54:12.977 に答える
3

編集 - Xcode 5 を使用して iOS 7 デバイスで iOS 6 インターフェイスをアプリに強制的に使用させることはできないことに注意してください (カスタム グラフィックを作成しない限り)。また、これは適切な設計アプローチではありません。iOS 7 のユーザーは、特定の UI スタイルを期待しているため、更新しました。古いインターフェースに強制的に戻さないでください。

iOS-7 より前のインターフェイスが本当に必要な場合は、 Xcode 4 のコピーをダウンロードして、それを使用してビルドできます。ただし、2014 年 2 月 1 日以降、Apple は Xcode 5.0 よりも前のものでビルドされたアプリの受け入れを停止します (iOS 7 開発ドキュメントでそれについて何かを見たと思いますが、参照を再び見つけることができません)。


iOS 6 の UI をアプリに保持しますが、iOS 7 向けのビルドはかなり簡単です。展開ターゲットを iOS 6.1 以前として設定していることを確認してください。ただし、Base SDK は引き続き iOS 7 として設定できます。次に、インターフェース ファイルごとに以下の手順に従ってください。

  1. ストーリーボード ファイルまたは XIB ファイルを開く
  2. 右側のユーティリティ パネルを開きます。
  3. [ファイル インスペクタ] タブをクリックします。次のように表示されます。

    Xcode 5 ユーティリティ パネルとファイル インスペクター

  4. 次に、Interface Build Document セクションに移動し、Builds For設定をiOS 6.0 以降または必要なバージョンに変更します。

    Xcode 5 ユーティリティ パネル インターフェイス ビルド ドキュメント セクション

  5. 次に、View As設定をiOS 6.1 以前に変更します。

    Xcode 5 インターフェイス ビルド ドキュメント セクション - 設定として表示

  6. Xcode からプロンプトが表示されます。古い UI に変換することを確認するだけです。

プロジェクトは必ず iOS 6 シミュレーターで実行してください。そうしないと、iOS 7 シミュレーターが独自の iOS 7 UI スタイルをオーバーライドします。iOS 6 シミュレーターをダウンロードするには、Xcode メニュー バーに移動します。[Xcode]、[設定] を選択します。次に、[ダウンロード] タブをクリックします。最後に、ダウンロードする必要があるシミュレーターをクリックします。

ここに画像の説明を入力

次に、iOS 6 シミュレーターでアプリを実行します。 ここに画像の説明を入力

残念ながら、Xcode で iOS 7 UI を無効にしても、デバイス/シミュレーターでオーバーライドされません。カスタム UI 要素を設計しない限り、iOS 6 UI を iOS 7 で維持する方法はありません。しかし、お見せしたように、引き続き iOS 6 で編集し、iOS 6 用にビルドすることができます

于 2013-09-22T20:09:22.247 に答える
1

他の回答で説明されているように、6.1 SDK を Xcode 5 にリンクすることは 1 つのステップです。ただし、iOS 7 で実行すると新しい UI 要素が使用される、View Controller がフルサイズになるなどの問題は解決しません。

この回答で説明されているように、iOS 7のレガシーモードにUIを切り替える必要があります。

// put in main.m
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"];
[[NSUserDefaults standardUserDefaults] synchronize];

注意: これは文書化されていないキーであり、App Store ビルドにはお勧めしません!

また、Xcode 4.6 を使用してビルドされたバージョンとの微妙な違いもあります。たとえば、透明なナビゲーション バーの動作は異なります (ビューがフルサイズになります)。

ただし、Xcode 4.6.3 は Mavericks でクラッシュするため (少なくとも私にとっては、rdar://15318883を参照してください)、これは少なくとも Xcode 5 をデバッグに使用し続けるための解決策です。

更新: Mavericks での Xcode 4.6.3 のクラッシュは、LLDB を使用している場合にのみ発生します。GDBに戻すと機能します。

于 2013-10-28T13:52:16.753 に答える
0

XCode 5 (および iOS7 シミュレーター) で iOS 6 コントロールを表示する唯一の方法は、ターゲットのベース SDK を iOS 6.1(6.0) に設定することだと思います。

Nirav で説明されているように、古い SDK を XCode 5 にコピーし、XCode を再起動して、Base SDK の選択の下に表示されるようにする必要があります。

私の推測では、Nirav はプロジェクトの設定を変更し、彼の場合はターゲットの設定から同期されていなかったため、うまくいきませんでした。そのため、ターゲットの Base SDK が iOS 6.0 であることを確認してください。その後、それは機能するはずです(少なくとも私にとってはそうです)。

于 2013-09-22T22:59:54.347 に答える
0

良いニュースは、XCode 5 を使用してベース SDK を iOS 6.1 に設定し (私の場合はバージョン 5.0.1 (5A2053))、iOS 7 シミュレーターで iOS7 以前に設計されたアプリを今すぐテストおよびデバッグできることです。

ベース SDK を XCode の iOS 6.1 に設定する方法がわからない場合は、このリンクがガイドになる可能性があります。

iOS 7 の方法で ActionSheet のルック & ビヘイビアのようなコントロールを提供する一部の OS を除いて、iOS7 より前のデザインのルック & フィールと同じように、すべてが正常に動作するようです。

ところで、昨日 mac os を maverick にアップグレードしましたが、これが影響要因かどうかはわかりません。

于 2013-10-23T21:13:57.217 に答える
0

これにより、Xcode 5 を使用して iOS 6 でアプリがどのように表示されるかをプレビューできます。

これは WWDC ビデオで見ました。

406 - autolayout xcode 5 の制御 (約 32 分)

ストーリーボード内のプレビュー機能を使用します。

ここに画像の説明を入力

これにより、iOS 7 と iOS 6 でどのように表示されるかを選択できます。

ここに画像の説明を入力

このビデオでは、iOS6 と iOS7 の両方のプレビューを同時に表示できる xcode のクールな (ほとんど隠された) 機能を紹介し、Xcode を 3 つの別々のビューに分割しています。

于 2013-09-22T23:05:59.410 に答える
0

シミュレーターではできないかもしれませんが、iOS 7 を搭載した実際のデバイスでアプリを互換モードで実行できることを付け加えておきます。

于 2013-09-25T03:03:44.680 に答える
0

私のコメントに反して、リンクに記載されている手順を実際に実行できました。私が試したのは、ハッキーなものではありませんでした:

  • XCode 4.6 アプリ パッケージを開きます (まだインストールされています)。
  • フォルダに移動しContents/Developer/Platforms/iPhoneOS.platform/Developer/SDKsます。
  • iPhoneOS6.1.sdk フォルダをコピーします。
  • XCode 5 アプリ パッケージを開きます。
  • 同じContents/Developer/Platforms/iPhoneOS.platform/Developer/SDKsフォルダに移動します。
  • ペースト。

次に、iOS 6.1 を .NET の下で私の iOS プロジェクトのベースにするオプションとして見ることができましたBuild Settings->Base SDKs

ただし、iOS 7 シミュレーターでアプリを実行したときにこれを行った後でも、視覚的な違いは感じられませんでした。すべてがデフォルトの iOS 7 スタイルでレンダリングされ、ボーダーレス ボタンとバーが表示されました。

シミュレータをリセットしても変化なし。

絵コンテのバージョンを変えても変化無し。

したがって、これもまた、これは不可能であるという私の主張を裏付けているようです。

試した人いたら知りたいです。

于 2013-09-22T19:49:30.553 に答える
0

これ私にとってはうまくいきましたが、ここでの説明には整理と詳細が必要です。それでもよろしければお知らせください。詳しく説明します。

それはこの答えから続く

  • iPhoneOS6.1.sdk フォルダーのコピーに加えて、iOS 6.1 シミュレーターもダウンロードする必要があります (適切な方法で、または Xcode の古いインストールからコピーします)。
  • 次に、iOS 7 シミュレーターの複製を作成し、その plist を 6.1 シミュレーターの plist に置き換えます。
  • Xcode を再起動する
  • デバイス オプションごとに 2 つの iOS 7 シミュレータ オプションが表示されます。1 つは通常の iOS 7 シミュレーターです。もう 1 つは、7 シミュレーターで 6.1 SDK ビルドを実行します。
  • 警告その後、Xcode のドロップダウン リストからダミー シミュレーターを削除できない場合があります (試したことはありません。ダミー シミュレーター フォルダーを削除した後、スタックしていました)。
于 2013-11-01T11:42:28.720 に答える
-1

展開情報から展開ターゲットを iOS 7.0 に設定します。プロジェクト名をタップすると、最初の画面に展開情報が表示されます...展開ターゲットを7.0に変更します。その後、シミュレーターを終了し、アプリを再度ビルドして実行します。

于 2013-09-22T18:05:53.120 に答える