Xcode 7 に組み込まれた iOS8 以降をサポートするアプリがあり、起動画面に XIB を使用しています (起動イメージはありません)。このビューには、アプリ バージョンを含む 1 つの UILabel と、Images.xcassets に存在する画像を含む 2 つの UIImageViews (ロゴとスプラッシュ イメージ) が含まれています。
アプリを起動すると UILabel とロゴ画像は正しく表示されますが、iOS9 の iPad Air 2 でアプリを実行するとスプラッシュ画像が表示されません。iPad 2、iPad Air、および iPad Air 2 用の iOS8 および iOS9 シミュレーターを実行している Air および Mini でテストしたところ、それらすべてで画像が正しく表示されました。
何が起こっているのかを理解できるかどうかを確認するためにいくつかの基本的なトラブルシューティングを実行しましたが、解決できませんでした。機能しているイメージと失敗しているイメージの唯一の違いは、それを資産...
ここに私が知っていることの要約があります:
スプラッシュ画像の UIImageView は、正しいサイズで正しい場所にあります。念のため、背景色を緑に設定しているので、これがわかります。ビューはそこにありますが、画像は表示されません。したがって、ビューに問題はないと思います。
ロゴ画像も使用するようにスプラッシュ画像の UIImageView を設定すると、ビューの正しい場所にロゴ画像が表示されます。これはまた、ビューに責任がないことを前提としています。
スプラッシュ イメージ ビューで使用している UIImage は、アプリの他の場所で使用され、他のビューでも問題なく表示されます (ロゴ イメージはアプリの他の場所でも使用され、問題なく表示されます)。したがって、画像は有効であり、他のビューに表示されることは問題ではないと想定しています。
xcassetsファイルのロゴとスプラッシュのUIImagesの設定が同じであることを確認しました。ユニバーサル、任意の幅と高さ、複数の倍率に設定され、デフォルトでレンダリングされます。違いが 1 つあります。ロゴには 1x、2x、3x のスケールがありますが、スプラッシュ画像には 1x と 2x しかありませんが、UIView で 1x、1x、2x の値のみで UIImages を使用してみました。少し前にプロジェクトに追加されました)。
異なるサイズまたは形式 (PNG および JPG) の別の画像を xcassets に追加し、その UIImage を UIImageView でスプラッシュ画像に使用しても、表示に失敗します。
別の UIImageView を XIB ファイルに追加し、既に xcassets にあった UIImage を割り当てると、画像が読み込み画面に表示されます。
ロゴに使用される画像ファイルをコピーして名前を変更し、それらをプロジェクトに追加してから、スプラッシュ ビューでその UIImage を使用しても表示に失敗します。
問題が発生した場合に備えて、プロジェクトをクリーンアップし、開発マシンを再起動し、Air 2 からアプリを削除して再インストールしてみました。
これらの最後の 3 つの手順から、プロジェクト ファイルの有効期間内の特定の時点以降に追加された画像に何らかの問題があると思われます。昨日 Xcode 7 にアップデートしましたが、スプラッシュ画像はもともと Xcode 6 で追加されていましたが、ロゴ画像 (これも Xcode 6 で追加されました) は数か月前に追加されました。
ロゴ画像とスプラッシュ画像の json ファイルを調べたところ、同じ形式のようです。また、違いを探して pbxproj ファイルを調べましたが、何も表示されません。
Air 2 に追加したこれらの新しい画像が起動画面に表示されない理由を誰か知っているかどうか疑問に思っていましたか? 表示されない画像に関連して私が読んでいる他の質問は、起動画像、または関連付けられたクラスを持つ XIB ファイル内の画像のいずれかに関連しているようですが、どちらもここでは関係ないようです。