307

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 ファイル内の画像のいずれかに関連しているようですが、どちらもここでは関係ないようです。

4

35 に答える 35

155

「私にとっての解決策は、ストーリーボードの UIImageView で [Clears Graphics Context] ボックスがオフになっていることを確認することでした。これを変更するだけで問題が解決しました。」他の解決策は私にとってうまくいきませんでした。アップル開発者フォーラムから入手

ここに画像の説明を入力

于 2016-02-18T12:33:09.870 に答える
101

iPhone 6でもまったく同じ問題がありました。

非常に奇妙な事実は、同じサイズ、圧縮、色空間を持つ images.xcassets から別の画像を使用できたことです...

機能しない理由を見つけることができませんが、解決策を見つけました: ファイルを images.xcassets の外に置き、Interface Builder でその完全な名前 (拡張子付き) を使用するだけです

ストーリーボード サンプルの splashScreen

この助けを願っています!

于 2015-09-24T01:00:34.270 に答える
33

次の一連の操作により、Xcode 7.3.1 および iOS 9.3.4 で問題が修正されました。

  1. ビルドをクリーンアップ (⌘+⇧+K)
  2. Xcode を閉じる
  3. iOS デバイスのハード リセット (電源 + ホーム ボタンによる再起動)
  4. Xcode を再起動します - 準備ができたら、インデックス作成を完了させ、デバイス上でビルドします。
于 2016-08-07T08:04:57.210 に答える
28

他の多くの回答は、デバイスの再起動および/または再構築および/または再インストールが解決策であることを示唆しています。

これらの答えは一部の人には有効ですが、これらの答えが有効な理由は、アプリがキャッシュされたスナップショットを「再取得」または「再構築」する必要があるためです。

キャッシュされたスナップショットは、サポート データがメモリに読み込まれる前に、アプリによって画像を表示するために使用されます。これには、ストーリーボード画像を含むアセット カタログが含まれます。

This SO answer by @jaga は解決策を提供しますが、UIImageViews がデバイスの起動画面に表示されない (シミュレーターには表示されない) 理由ではありません。

バックグラウンド

最近、「Launch Screen.storyboard」ファイルでカスタム フォントを使用しようとしました。

@TimCamberによるこのSOの回答を読んだ後、私が明確にできなかった理由は、もう少し調査とテストを行うよう促しました。

起動画面のストーリーボード ファイルにカスタム フォントが含まれていないのは、アセット カタログ内の画像が含まれていないのと同じ理由です...

アプリは、起動画面のストーリーボード ファイルからアプリの起動画面の縦向きと横向きのスナップショットを準備し、(現在) アプリ バンドルの次の場所に保存します。

  • /Library/Caches/Snapshots/<<app_bundle>>/
  • /Library/Caches/Snapshots/<<app_bundle>>/downscaled/.

このプロセスは、カスタム フォントやアセット カタログなどのサポート ファイルが読み込まれる前に完了します。

解決

@jaga のソリューションに従って上記で述べたように、文字通り必要なのは次のことだけです。

  1. (古い学校) 画像ファイル (.PNG) をアプリのバンドルに追加します (下のスクリーンショットからわかるように、Images サブディレクトリの Supporting Files サブディレクトリの下に画像ファイルを追加しました)。

Xcode の Project Navigator の関連ディレクトリのスクリーンショット

  1. Launch Screen StoryboardファイルのUIImageViewオブジェクトでその画像を参照してください...

Xcode の Attributes Inspector の下にある UIImageView の Image View セクションのスクリーンショット

于 2016-04-19T02:58:53.117 に答える
21

私は同じ問題を見ていました。デバイス (iPhone 6) を再起動し、アプリをデバイスに再構築することが唯一の修正方法です。他にも多くのヒントや提案を試しましたが、何もうまくいきませんでした。再起動+再構築のみが役に立ちました。

于 2015-11-16T22:52:03.210 に答える
16

TestFlight からインストールされたアプリについても同じことがありました。 アプリを削除 -> iPhone を再起動 -> アプリを再インストールするとうまくいきます。アプリを再インストールするか、デバイスを再起動するだけでは役に立ちませんでした。

于 2016-01-28T16:59:08.203 に答える
9

私にとってうまくいったのは、シミュレーターメニューからコンテンツと設定のリセット...を選択することでした

コンテンツと設定メニューをリセット

于 2017-01-08T04:58:40.390 に答える
8

私は同じ問題を抱えていましたが、デバイスを再起動しても解決しませんでした。私にとってうまくいったのは、起動ストーリーボードから UIImageView を削除し、新しいストーリーボードを追加することでした。

于 2015-12-23T00:42:15.690 に答える
6

Image.xcassetsから画像を取り出し、プロジェクトに再度追加します。それは私のために働いた。

于 2016-03-29T04:00:35.823 に答える
5

私はiPhone 5sデバイスを使用していますが、この問題も満たしています。

私はそれを修正します:

  • ドライブ データの削除

  • プロジェクトをきれいにする

  • Xcode を再起動する

  • デバイスからプロジェクトを削除する

  • 5sを再起動します。

Xcode がメモリを使用するのは何か問題があると思います。システムが Xcode に小さなメモリを割り当てている可能性があります。これは、Xcode がランチ イメージの描画に失敗したためです (私のコンピューターでは、Xcode は数週間閉じずに実行されています)。

于 2016-12-02T03:52:15.327 に答える
2

iOSのバグのようでした。時々システムアニメーションが消えたように。

今、私はiPhoneを再起動するだけでうまくいきます。

于 2016-05-12T04:12:34.740 に答える
1

次に私を助けました:

  • 「起動画面ファイル」を別のxibに変更
  • アプリを実行する
  • xibを元に戻す

また、非常に重要です。別のタブで xib が開かれていないことを確認してください。これも原因となる可能性があります。

于 2016-10-27T13:30:37.593 に答える
1

これは重要すぎます。空にする 必要があります。Launch Screen File

ここに画像の説明を入力

于 2016-09-07T11:35:45.593 に答える
1

簡単な解決策は、PNG の代わりに JPG を使用することです。

于 2018-06-05T21:24:16.057 に答える
1

1. プロジェクト イメージの削除 2. イメージ名の変更 3. ファイル イメージのプロジェクトへの追加

それは私のために働いた。

于 2016-08-03T13:46:07.430 に答える
0

私にとっての問題は、起動画面のサイズが 1 ピクセル (2208x1242 ではなく 2209x1242) ずれていたことです。それを修正してから、デバイスを再起動し、アプリを再構築すると役に立ちました。

于 2016-07-11T08:10:15.943 に答える