XCode 4 で iOS6 用にビルドされたアプリがあります。iOS7 でアプリを実行すると、iOS6 で常に使用されていたものとまったく同じように、外観も動作も完全に変わりません。
ただし、XCode 5 でアプリをシミュレートすると、ターゲット OS を同じままにしても、いくつかの問題があります。これは私には意味がありません。大きな移行 (ボタンの外観の変更など) を行わずにアプリに小さな変更を加える必要がある場合、XCode 4 を引き続き使用する必要がありますか?
XCode 4 でコンパイルされたアプリには、おそらく iOS6 のターゲット SDK があります。iOS7 で実行すると、iOS7 はアプリが iOS7 SDK に対してコンパイルされていないことを検出し、「iOS6 互換性」モードで実行します。だからこそ、見栄えが良いのです。
XCode 5 でアプリをコンパイルする場合、そのターゲット SDK はおそらく iOS7 です。そのバージョンを iOS7 で実行すると、iOS7 は、アプリが iOS7 を「完全にサポート」していると判断し、すべての新しい UI メトリックを適用します。これにより、おそらくレイアウトが崩れ、UI が正しく見えなくなります。
私もこれに驚きましたが、私は次のように考えています。
iOS 6 SDK に対してビルドされたアプリは、iOS 6 とまったく同じように見えます(キーボードも同じです)。しかし、Xcode 5 を使用してアプリをテストし、iOS 7 SDK に対してビルドすると、それらは「ひどい」ように見えます。
最初に-所有しているXib/ストーリーボードを確認します。プロパティで、「表示方法」にiOS 6.1以前が選択されていることを確認してください。そうしないと、iOS7として表示されます。