web-dev-qa-db-ja.com

iOSシミュレーター7 \ XCode 5を使用してiOS 7以前のUIをテストする方法(iOS 7用のアプリをアップグレードしないで)

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の外観はアプリに表示されますが、バグが多くなります

30
Segev

これはシナリオです:

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

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

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

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

ステップ5:

enter image description here

16
Segev

コピーiPhoneSimulator6.1.sdk

から

<YOUR XCode4 path>/Xcode4.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

ベースターゲットをiOS6.1に設定します(xcode4からコピー/貼り付けした後にリストされます)。

enter image description hereenter image description here

5
palaniraja

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

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

4
Rob Napier

編集-アプリがXcode 5を使用するiOS 7デバイスでiOS 6インターフェイスを使用するように強制するのは不可能であることに注意してください(カスタムグラフィックを作成しない限り)。それも良いデザインアプローチではありませんです。 iOS 7のユーザーは特定のUIスタイルを期待しているため、更新しました。だから彼らにそれを与える、彼らを古いインターフェースに強制的に戻さないでください。

reallyreallyが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 Utilities Panel and File Inspector

  4. 次に、インターフェイスのビルドドキュメントセクションに移動し、Builds ForiOS 6.0以降または必要なバージョンに設定します。

    Xcode 5 Utilities Panel Interface Build Document Section

  5. 次に、View AsiOS 6.1以前の設定

    Xcode 5 Interface Build Document Section - View As Setting

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

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

enter image description here

次に、iOS 6シミュレーターでアプリを実行します。 enter image description here

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

3
Samuel Spencer

他の回答に記載されているように6.1 SDKをXcode 5にリンクすることは、1つのステップです。ただし、これでもiOS 7で実行されている新しいUI要素が取得される、ビューコントローラーがフルサイズになるなどの問題は解決されません。

この回答 で説明されているように、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:// 1531888 を参照)、これは少なくともデバッグにXcode 5を使用するための解決策です。

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

1
Ortwin Gentz

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

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

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

0
Andris Zalitis

うわー、これは本当の混乱です。ありがとう、Apple [*]

私はこれ(これ:XCode 5ビルドiOS 6アプリ)を動作させましたが、いくつかのXIBがめちゃくちゃになっていて、上記のいくつかの手順を組み合わせて機能させました。

1)iOS 6ベースSDKでXCode 5をセットアップする

@Shaにはそのための適切な手順があります: iOSシミュレーター7\XCode 5を使用してiOS 7以前のUIをテストする方法(iOS 7のアプリをアップグレードせずに)

2)各XIBを通過し、XCode 4.6モードに設定します

@RazorSharpsの投稿には適切な手順があります: iOSシミュレーター7\XCode 5を使用してiOS 7以前のUIをテストする方法(iOS 7のアプリをアップグレードせずに)

これが100%必要だったのかはわかりませんが、私はそれを実行しました。 (おそらく、後で戻って、まだ発煙していないときにこれなしで試してみます)。

3)トランスルーセントに設定されている可能性のあるXIB(またはコード)内のナビゲーションコントローラーを見つけ、それらを不透明に設定します。

これは私にとってのトリックでした。ナビゲーションバーを黒の半透明として定義したルートXIBがありましたが、ロードされたすべてのXIBが独自の外観で上書きされました。
「実際のiOS 6」では、コントローラー設定はこれをオーバーライドします(つまり、ナビゲーションバーは不透明に表示されます)が、iOS 7のiOS 6互換モードでは、そうなりません(つまり、 iOS 6の外観ですが、透明で、ビューのレイアウトがめちゃくちゃです。

    • @appledevtools:私たちはあなたのハードワークに感謝します、これは正しくするのが難しいです。しかし、ここに提案があります:既存のプロジェクトをXCode 5にアップグレードするとき、IB xibはXCode 4.6モードのままにしておく必要があります。エディター>設定の検証コードが設定のアップグレードを提案し、影響の妥当な警告が表示されます。 これを自動的かつサイレントに行わないでください:-)また、iOS 6互換モードでnavbarスタイルが変更された理由を見つけて修正してください。
0
Davidm

これにより、Xcode 5を使用したiOS 6でのアプリの外観のプレビューが表示されます。

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

406-自動レイアウトxcode 5(約32分)を制御します

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

enter image description here

これにより、iOS 7とiOS 6の外観を選択できます。

enter image description here

このビデオは、Xcodeのクールな(ほとんど非表示の)機能を示しています。これにより、iOS6とiOS7の両方のプレビューを同時に表示し、Xcodeを3つの個別のビューに分割できます。

0
DogCoffee

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

0
Matthew Quiros

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

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

IOS7のようにActionSheetのルックアンドビヘイビアなどの一部のOS提供のコントロールを除いて、すべてが正常に機能し、iOS7より前のデザインと同じように見えます。

ところで、私は昨日Mac OSをマーベリックにアップグレードしましたが、これが影響要因であるかどうかはわかりません。

0
David

私のコメントに反して、私は実際に言及されたステップ リンク内 に従うことができました。私が試したのは一種のハックではありませんでした:

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

そうすれば、iOSプロジェクトをBuild Settings->Base SDKsの下に置くオプションとしてiOS 6.1を見ることができました。

ただし、iOS 7シミュレーターでアプリを実行したときにこれを行った後でも、視覚的な違いを感じることはできませんでした。

シミュレータをリセットしても変化はありません。

ストーリーボードのバージョンを変更しても変更はありません。

したがって、これは、これが不可能であるという私の主張を確認するようです。

誰かが試してみたら知りたいです。

0
Nirav Bhatt

これは機能しましたが、ここでの説明はクリーンアップと詳細化が必要です。それでも必要な場合はお知らせください。詳しく説明します。

この答え から続く

  • 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ビルドを実行します
  • [〜#〜] warning [〜#〜]その後、Xcodeのドロップダウンリストからダミーシミュレーターを削除できない場合があります(私は試しました。ダミーのシミュレーターフォルダーを削除した後、スタックしました)
0
iosengineer