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の外観はアプリに表示されますが、バグが多くなります
これはシナリオです:
これまでに見つけた最良の解決策:
上記の後、iOSシミュレーターの2つのバージョンができます。 iOS 7シミュレーターを含むバージョン6およびバージョン7
ステップ5:
コピー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からコピー/貼り付けした後にリストされます)。
IOS 7シミュレータではこれを行うことはできません。これは、iOS 6 Simulator(Xcode 5で実行)およびデバイス(iOS 6 SDKでビルドする限り、iOS 7を実行)で実行できます。ただし、iOS 7 SimulatorにはiOS 6互換モードはありません。
IOS 6互換モードはiOS 6の完全な複製ではないことに注意してください。テストして対処しなければならない可能性のあるさまざまな動作の違いがまだあります。しかし、基本的なUIコンポーネントは期待どおりのものです。
編集-アプリがXcode 5を使用するiOS 7デバイスでiOS 6インターフェイスを使用するように強制するのは不可能であることに注意してください(カスタムグラフィックを作成しない限り)。それも良いデザインアプローチではありませんです。 iOS 7のユーザーは特定のUIスタイルを期待しているため、更新しました。だから彼らにそれを与える、彼らを古いインターフェースに強制的に戻さないでください。
really、reallyが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として設定できます。ここで、インターフェースファイルごとに以下の手順に従ってください。
[ファイルインスペクタ]タブをクリックします。次のようなものが表示されます。
次に、インターフェイスのビルドドキュメントセクションに移動し、Builds For
iOS 6.0以降または必要なバージョンに設定します。
次に、View As
iOS 6.1以前の設定:
Xcodeがプロンプトを表示します。古いUIに変換することを確認するだけです。
必ずiOS 6シミュレーターでプロジェクトを実行してください。それ以外の場合、iOS 7 Simulatorはそれ自体のiOS 7 UIスタイルをオーバーライドします。 iOS 6 Simulatorをダウンロードするには、Xcodeメニューバーに移動します。 Xcode、Preferencesを選択します。次に、[ダウンロード]タブをクリックします。最後に、ダウンロードする必要があるシミュレータをクリックします。
次に、iOS 6シミュレーターでアプリを実行します。
残念ながら、XcodeでiOS 7のUIを無効にしても、デバイス/シミュレーターではそれが上書きされません。カスタムUI要素を設計しない限り、iOS 7でiOS 6 UIを維持する方法はありません。しかし、先ほどお見せしたように、iOS 6で引き続き編集して、iOS 6用にビルドできます。
他の回答に記載されているように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に切り替えると機能します。
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であることを確認してください。次に、それはうまくいくはずです(少なくとも私にとってはうまくいきます)。
うわー、これは本当の混乱です。ありがとう、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の外観ですが、透明で、ビューのレイアウトがめちゃくちゃです。
これにより、Xcode 5を使用したiOS 6でのアプリの外観のプレビューが表示されます。
これはWWDCビデオで見ました。
406-自動レイアウトxcode 5(約32分)を制御します
ストーリーボード内のプレビュー機能を使用します。
これにより、iOS 7とiOS 6の外観を選択できます。
このビデオは、Xcodeのクールな(ほとんど非表示の)機能を示しています。これにより、iOS6とiOS7の両方のプレビューを同時に表示し、Xcodeを3つの個別のビューに分割できます。
追加したいのは、シミュレーターでは実行できないかもしれませんが、iOS 7が搭載されている実際のデバイスでは互換モードでアプリを実行できます。
良いニュースは、ベースSDKをXCode 5を含むiOS 6.1に設定し(私の場合、バージョン5.0.1(5A2053)です)、iOS 7シミュレーターでiOS7以前に設計されたアプリをテストおよびデバッグできるようになったことです。
XcodeでベースSDKをiOS 6.1に設定する方法がわからない場合は、 このリンク がガイドになることがあります。
IOS7のようにActionSheetのルックアンドビヘイビアなどの一部のOS提供のコントロールを除いて、すべてが正常に機能し、iOS7より前のデザインと同じように見えます。
ところで、私は昨日Mac OSをマーベリックにアップグレードしましたが、これが影響要因であるかどうかはわかりません。
私のコメントに反して、私は実際に言及されたステップ リンク内 に従うことができました。私が試したのは一種のハックではありませんでした:
Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
フォルダに移動します。Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
フォルダに移動します。そうすれば、iOSプロジェクトをBuild Settings->Base SDKs
の下に置くオプションとしてiOS 6.1を見ることができました。
ただし、iOS 7シミュレーターでアプリを実行したときにこれを行った後でも、視覚的な違いを感じることはできませんでした。
シミュレータをリセットしても変化はありません。
ストーリーボードのバージョンを変更しても変更はありません。
したがって、これは、これが不可能であるという私の主張を確認するようです。
誰かが試してみたら知りたいです。
これは機能しましたが、ここでの説明はクリーンアップと詳細化が必要です。それでも必要な場合はお知らせください。詳しく説明します。
この答え から続く