デバイスの起動画面でUIImageViewに画像が表示されない


301

Xcode 7に組み込まれているiOS8以降をサポートするアプリがあり、起動画面にXIBを使用しています(起動画像はありません)。ビューには、アプリのバージョンを含む1つのUILabelと、Images.xcassetsに両方とも存在する画像を含む2つのUIImageViews(ロゴとスプラッシュ画像)が含まれています。

アプリケーションを起動するとUILabelとロゴ画像が正しく表示されますが、iOS9を搭載したiPad Air 2でアプリを実行するとスプラッシュ画像が表示されません。iPad 8、iPad Air、iPad Air 2用のAirとMiniを実行しているiOS8、iOS9、およびiOS9シミュレータでテストしましたが、画像はすべて正しく表示されます。

私は何が起こっているかを見つけ出すことができるかどうかを確認するためにいくつかの基本的なトラブルシューティングを実行しましたが、私はそれを解決することができていないと働いている画像と失敗しています1の間、私が見ることができる唯一の違いはあるとき、私はこれを追加しました資産...

これが私が知っていることの要約です:

  • スプラッシュ画像のUIImageViewは、正しい場所、正しいサイズにあります。念のため、背景色を緑色に設定しているので、これはわかります。ビューはありますが、イメージは表示されません。だから私はビューが非難されるべきではないと仮定しています。

  • ロゴ画像も使用するようにスプラッシュ画像のUIImageViewを設定すると、ロゴ画像がビューの正しい場所に表示されます。これはまた、その見解が非難されるべきではないと思い込む原因にもなります。

  • スプラッシュイメージビューで使用しているUIImageは、アプリの他の場所で使用され、他のビューでは正常に表示されます(ロゴイメージはアプリの他の場所でも使用され、美しく表示されます)。そのため、画像は有効であり、他のビューに表示されることは問題ではないと想定しています。

  • xcassetsファイルのロゴとスプラッシュのUIImagesの設定が同じであることを確認しました。これらは、ユニバーサル、任意の幅と高さ、複数の倍率に設定され、デフォルトとしてレンダリングされます。違いが1つあります。ロゴには1x、2x、3xのスケールがありますが、スプラッシュ画像には1xと2xしかありませんが、UIViewsで1xと1xと2xのみの値を持つUIImagesを使用してみました少し前にプロジェクトに追加されました)。

  • xcassetsに別のサイズまたはフォーマット(PNGおよびJPG)の別の画像を追加し、スプラッシュ画像のUIImageViewでそのUIImageを使用しても、表示に失敗します。

  • 別のUIImageViewをXIBファイルに追加して、すでにxcassetsにあったUIImageを割り当てると、画像がロード画面に表示されます。

  • ロゴに使用する画像ファイルをコピーして名前を変更し、それらをプロジェクトに追加してから、そのUIImageをスプラッシュビューで使用しても表示されません。

  • 問題が発生した場合に備えて、プロジェクトをクリーンアップし、開発マシンを再起動し、Air 2からアプリを削除して再インストールしてみました。

これらの最後の3つのステップは、プロジェクトファイルのライフタイムの特定のポイントの後に追加されたイメージに問題があると私を信じさせてくれます。昨日Xcode 7に更新しましたが、スプラッシュ画像はもともとXcode 6で追加されていましたが、ロゴ画像(Xcode 6でも追加)は数か月前に追加されました。

ロゴ画像とスプラッシュ画像のjsonファイルを調べましたが、それらは同じ形式であるように見えます。また、pbxprojファイルを調べて違いを探しましたが、何も表示されません。

だから私は、誰かが起動画面になぜ私が特にAir 2に追加しているこれらの新しい画像を表示しないかもしれないという考えを持っているのだろうかと思っていましたか?すべてが表示されない画像に関連して私がこれまで読んだ他の質問は、起動画像、または関連クラスを持つXIBファイル内の画像に関連しているようですが、どちらもここでは関係がないようです。


1
これに返信する意味がありました-私は戻って提供された回答を読み、次にXcodeに戻り、UIImageViewと画像を再試行して、それらを試しました。今回は変更なしで動作しました。私には理由がわかりません-同じバージョンのXcode、以前にアプリを再起動、再構築、クリーンアップ、削除しましたが、同じiOS、同じMac OS、それはうまくいきました。そのため、残念ながら、解決策のいずれかが役立つかどうかを確認することができませんでした。
MFW、2015年

私にとって、提供された回答のどれもが問題を解決しませんでした。シミュレーター、iPhone 5、iPhone 5 SE、iPad 4はすべて、私のLaunchScreen.xib内のUIImageViewを正しく表示しています。iPadAir 2では表示されません。すべてのデバイスを再起動し、すべてのデバイスに再インストール。行動は残ります。
クリスチャン

130票以上の回答を受け入れる必要がありますね。
Khanh Nguyen

私はカーンに同意します、それはほとんどのために働いています!!
gunjot sing 2016

@MFW、回答FFSを受け入れてください!私は警官隊にUを報告しています。
GeneCode

回答:


475

オフの場合はオフにしてから、再度オンにします。

真剣に、デバイスを再起動します—それは私のためにそれを修正したものです。

機能しなかったものを次に示します。

  • DerivedDataのクリーニング
  • プロジェクトの掃除
  • デバイスからアプリをアンインストールする
  • Xcodeの再起動
  • コンピュータを再起動する

古い観察:

他のように、それは:

  • シミュレータで正常に動作します
  • デバイス(iPhone 5S、iPad Air)での作業に使用
  • コードは変更されていません(git reset --hard HEADで確認済み)が、動作を停止しました。

動作を停止した最初のビルドをトリガーしたことを覚えているのは、実行中にiPhoneを取り外すことでした。(それが関連しているかどうかはわかりません。)

ただし、それを修正しないgit reset(すべてのクリーンなステップが機能していないことと組み合わせて)は、これが別の場所にキャッシュされている必要があることを示しています。かなり可能性のある.gitignoredファイルの1つですか?(XcodeプロジェクトではGit無視ファイルを使用しています

1つのUIImageView(3つあるUIViewの場合)で機能し、他では機能しない1つの回避策は、画像を.xcassetsファイルに入れることでした。プレーンイメージファイルに戻しても、修正は取り消されませんでした。(本当にキャッシュエラーのように感じます。)

更新:トップを参照してください—デバイスの再起動が修正されました。間違ったビットマップデータがデバイス自体にキャッシュされているように感じます。

レーダー:http : //openradar.appspot.com/23534818


31
シミュレータを再起動するだけでうまくいきました。クレイジー!
FractalDoctor 2015年

1
ありがとうございました!これで修正されました。
CodenameDuchess、

6
App Storeユーザーにも同じ問題が発生すると思いますか?
アダムウェイト2016

1
@danielstormは正直であることがわかりませんでした
Adam Waite

2
なんというバグだ、ggアップル。おかげで、私の電話の再設定がうまくいきました。
Jacob King

151

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

ここに画像の説明を入力してください


2
くそー、私はこれをしようと思ったことはなかったでしょう。Xcode 7.3.1(7D1014)とiOS 9.3.2 Developer Beta 3のシミュレータとデバイスを修正
Nuthatch

3
これもうまくいったことを確認できます。Xcode 7.3およびiOS 9.3.2。
TorbjørnKristoffersen

1
私がすでにチェックしている場合でも、チェックを外して再度チェックするとうまくいきました!
lonesomewhistle 2016年

1
あなたの答えのための素敵な+1は、Xcode 8とiOS 10でも動作します
Skovie

1
これが正解です。デバイス上のiOS 11で実証済み。
jberlana

99

iPhone 6でもまったく同じ問題が発生しました。

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

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

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

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


1
それは私が最初に試みたものですが、それは私にはうまくいきません。
Paul Slocum

これでうまくいきました。ありがとう。なぜそれがxcassetsファイルの一部の画像でしか機能しないのか知っていればいいのに...
Christopher King

最初はこれでうまくいきますが、イメージやラベルのプロパティはまったく更新されません。クリーンな製品アクションの後でも。ここにバグを報告し
Philip Borges

アプリの削除後にiPhone 6sを再起動することで問題は解決しました。その前に、以下の「グラフィックスコンテキストをクリアする」NikLanfソリューションもチェックされていました。
マシューファーガソン

これは機能します。理由は、起動画面が表示されたときに.xcassetがまだ読み込まれていないためだと思います。考えてみれば、それがLaunchScreenの目的です。iOSがxcassetを含むアプリコンテンツをロードするまでの待ち時間です。アプリのルートフォルダー内のすべてが最初に読み込まれるので、私はそれを仕事の外に置いていると思います。
GeneCode 2017

33

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

  1. ビルドをクリーンアップ(⌘+⇧+ K)
  2. Xcodeを閉じる
  3. iOSデバイスのハードリセット(電源+ホームボタンの再起動)
  4. Xcodeを再起動します。準備ができたら、インデックス作成を終了し、デバイスでビルドします。

私の日を救った!ありがとう!
Zack Zhu、

働いた。手順2と4を実行しませんでした。おそらくiOSデバイスのハードリセットのみが必要です。これを確認できますか?
ティモシーLJスチュワート

@ TimothyL.J.Stewartの手順2と4は、問題が私にとって非常に煩わしいものだったため、私がとった予防策のほんの一部でした。それらは実際には(通常)ビルドに影響を与えないので、それらは不要かもしれないと言っているのは正しいと思います。
mayankk2308 2016年

Xcode 8 Swift 3.0電源オフまたはハードリセットは常に機能する唯一の機能であり、新しいアセットが追加されるたびに実行する必要があります。DerivedDataを削除しても削除されません。ただし、画像はシミュレータで正しく動作します。これは私の時間の多くを浪費しました、解決のためにありがとう@MayankKumar。
ティモシーLJスチュワート

魅力のように働いた
lborgav 2017

27

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

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

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

@jagaによるこのSOの回答は、UIImageViewsがデバイスの起動画面(シミュレータではない)に欠落している理由に関する解決策を提供しますが、理由は提供しません。

バックグラウンド

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

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

Launch Screen Storyboardファイルにカスタムフォントが含まれていない理由は、アセットカタログ内の画像が含まれていないのと同じ理由です...

アプリは、Launch Screen StoryboardファイルからアプリのLaunch Screenのポートレートスナップショットとランドスケープスナップショットを作成し、(現在)アプリバンドルに保存します。

  • /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の属性インスペクターの下にあるUIImageViewの画像ビューセクションのスクリーンショット


しばらくこれに取り組んできてくれてありがとう。それは私にとってはうまくいきます。
James Laurenstin、2016

私のために直接働きました。これが正しい答えでなければなりません
ムハンマド・Shraim

起動時にIOSはアセットをコンパイルできなかったため、イメージをバンドル作品に配置しました。ありがとう。
icould 2017

これまでのベストアンサー。これを追加します。画像はapp-bundleのルートディレクトリにある必要があります。それ以外の場合、画像をサブディレクトリに保存する場合は、「Media / launch_v1_200_mod.png」のフルパスを指定する必要があります。
MoVod 2017年

1
私も同じことをしました。アプリはすでに公開されていますが、問題は画像が表示されていたり、画面中央に白い四角が表示されていたりすることです
Punit

21

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


ユーザーがAppStoreからアプリを更新するとどうなりますか?デバイスを再起動する必要がありますか?
kokos8998

17

私のソリューション@iOS 11.x:

  • .jpg代わりに画像を使用してください.png。画像ファイルのサイズは重要だと思います。
  • (オプション)画像ファイルをでなくプロジェクトディレクトリに配置し.xcassetsます。

3
画像ファイルを外部に配置.xcassetsする
Husam

@Husam本当に重要なのはファイルサイズだと思います。起動画面に2つの画像があります。大きな画像(400 + KB .png)とロゴ(10 + KB .png、.xcassets内)です。ロゴは常に正常に表示されますが、大きいものは表示されません。
Ke Yang

あなたは正しいです..私のコメントの後、別の画像を追加した後に問題が再び現れました。ご協力ありがとうございます
Husam

2
その後、jpg画像を使用して指示に従い、機能しました
Husam

16

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


これが私のために働いた唯一のものです-私がこれを90分前に見ていたらいいのに!
KML

私がこれを4時間前に見ていたとしたら
gerry.liang

私もうまくいきましたが、問題は奇妙です:|
Nishu_Priya 2018年

8

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



7

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

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


6

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


これは、アプリに起動画面のスナップショットを強制的に再作成させるためにのみ機能しますが、問題の解決策や理由ではありません。
andrewbuilder

6

モバイルからアプリを削除してから、モバイルを再起動してアプリを再度インストールしてください。今問題は解決されます


5

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

私はそれを修正します:

  • ドライブデータを削除

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

  • Xcodeを再起動します

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

  • 5sを再起動します。

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


わかりませんが、うまくいきました。共有してくれてありがとう。
Arpit B Parekh 2017年

4

私はまた、iPadとiPhoneデバイスを搭載したXcode 7でこの問題を抱えていました。意味がありませんが、ほとんどの場合、ImageビューだけでなくImageビューのHighlightedイメージも、images.xcassetsの同じイメージに設定することで回避できました。


私にも助けになったようです
rafalkitta

4

launchscreenはAssets.xcassetsの画像のみをサポートすると思います。


上記のすべての答えを試しましたが、どれもうまくいきませんでした。しかし、この答えは問題を解決しました。
Ercan Celik

4

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

xcode clean deプロジェクトの最初。

シミュレータを使用している場合は、アプリを削除して再起動します。

デバイスを使用している場合は、アプリを削除してデバイスを再起動します。


3

Xcodeを再起動するとうまくいきました。

それをしなかったもの:

  • ビルドフォルダーのクリーンアップ
  • デバイスまたはシミュレーターを再起動します(画像はどちらにも表示されませんでした)

3

ImageViewを選択し、属性インスペクタタブ>画像ビュー>画像>画像名で画像拡張子(.pngまたは.jpg)を削除します。

launchscreen.storyboardには画像は表示されませんが、デバイスには表示されます。これでうまくいきました。


これも私の問題でした。奇妙なことに、一部のデバイスではランダムに機能しました。XIB /ストーリーボード編集用のXcode 9.4を使用したXamarin-Project ...
fl034

2

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

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


2

私の場合はイメージ名でした。LaunchScreen.xib
という名前のイメージを追加しましたDefault-568h@2x.png。これは、テスト用の古い起動画面の1つです。私はiPhone Xシミュレーターでビルドしていましたが、画像が表示されませんでした。

名前を中立的な名前(MyImage.png)に変更すると、問題が解決しました。

@2xだけでなく、問題の一部だったようです-568h。これは-812h@3xデバイス上で理にかなっています。


2

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

ここに画像の説明を入力してください


8
彼はXIBストーリーボードを起動に使用していますが、この答えは機能しません。
benck 2017

2

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


1

起動画面のストーリーボードのimageViewでも同じ問題があります。プロジェクトから画像の参照を削除し、画像の名前を変更してプロジェクトに再度追加しました。すべてが完璧に動作します。


1

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

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


1

iPhone 6のiOS 10とシミュレーターでこの問題が発生しました。画像がフォルダにあり、それが問題のようです。Xcodeのフォルダーから画像を削除し、問題を解決したプロジェクトのベースディレクトリに配置しました。


1

私は同じことを経験します。画像の解像度を300ピクセル/インチから変更し、72に変更します。これでうまくいきます。


1

次に私を助けました:

  • 「Launch Screen File」を別のxibに変更します
  • アプリを実行する
  • xibを元に戻す

また、非常に重要です。別のタブでxibが開かれていないことを確認してください。


1

私のために働いたシンプルで根本的な解決策を見つけました:

1-ファイルを削除します:LaunchScreen.storyboardをゴミ箱に移動します。

2-製品->クリーン

3-LaunchScreen.storyboardという名前の新しい起動画面ファイルを作成し、その中に画像を配置します

4-保存してビルド

何時間も複雑な方法を試した後、うまくいきました... LaunchScreen.storyboardが書き込みロックされて保存できなかったか、奇妙なキャッシュプロセスがブロックしていたようです。


1

画像名が問題です。起動画面のストーリーボード内で使用されているイメージ名を変更します。英数字以外の文字を使用しないようにしてください( "_-&@"は使用しないでください)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.