私はこの問題に一日を費やしていて、解決策を見つけることができませんでした。私はiOS 6.1 SDKでアプリケーションを開発しており、デザイン全体はiOS 6.1 UIに依存しています。昨日、スマートフォンをiOS 7にアップデートしました。アップデートが完了すると、バックアップから戻ってきた以前にデプロイされたアプリの外観と機能は以前と同じです(iOS 6.1の場合)。すべてが大丈夫でした。ただし、Xcodeをバージョン5に更新する必要があったので、開発中に引き続きデバッグバージョンをiOS 7デバイスに展開できます。 Xcode 5に更新する前に、Xcodeの内部フォルダーからiPhoneOS6.1.sdkパッケージをバックアップしました。次に、Xcode 5に更新し、iPhoneOS6.1.sdkパッケージを、Xcode 5のインストールに付属していたiOS 7 SDKの隣のフォルダーに戻しました。プロジェクトのベースSDKをiOS 6.1に切り替えました。これは、ベースSDKセレクターリストに表示され、インターフェイスビルダーですべてのストーリーボード/ XIBがiOS 6.1としてビルドするように設定されていることを確認しました。
ただし、アプリケーションを携帯電話に展開すると、iOS 7のUI要素で表示されているように、がらくたのように見えます。 iOS 6.1がインストールされたデバイスを使用すると、すべてが正常に見えます。私がiOS 7デバイスでデバッグすることを選択した場合、XCodeは私のベースSDKの選択について気にしませんし、アプリケーションをiOS 7にリンクしているようです。
インストールされているiOSバージョンに関係なく、Xcodeを強制して同じ6.1にリンクされたものをすべてのデバイスに展開するにはどうすればよいですか?
古いSDKを見つけてダウンロードします。古いSDKはここにあります https://developer.Apple.com/downloads/index.action?name=Xcode
Xcode.appディレクトリをXcode_4.6.3.app
としてコピーしました。これで、両方のxcodeバージョンでテストおよびデバッグできます。対応するフォルダから実行するか、デスクトップにショートカットを作成する必要があります。コマンドラインからビルドするとき、パラメーターをiPhoneOS7.0ではなくiPhoneOS6.1に指定します
これは、Xcode5とiOSでうまく機能しました。 Xcode5のSDKディレクトリに移動します。次のように、シンボリックリンクを古いSDKに追加します。
ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk
Xcode 5ツールバーで、ターゲットに対してデバイスが2回リストされます(これも質問で述べました)。奇妙な理由で、1つはiOS 6.xの外観で構築し、もう1つはiOS7の外観で構築しています。このリストのいずれかのデバイスでビルド/実行を試みます。それでもiOS7の外観が表示される場合は、ツールバーのストップをクリックし、他のデバイスを選択して、もう一度ビルドします。
Xcode 5でクラッシュが発生することはないので、クラッシュが多い場合は再インストールすることをお勧めします。
まず、以前のバージョンのXCodeからiOS 6.1 SDKをコピーして貼り付ける必要があります。他の人々がこれを行う方法についての指示を与えたと思います。
次に、iOS 6の開発を続けるつもりである(たとえば、iOS 6のUIを壊すことなく、新しいAPIを使用するつもりがない)と想定して、次のようにします。
これにより、iOS 6スタイルのUIでアプリケーションを構築できると同時に、Xcode 5を使用できるようになります。UIの変更専用に新しい開発ブランチを開始して、アプリのUIをiOS 7互換にすることをお勧めします。