web-dev-qa-db-ja.com

UIImageデバイスの起動画面に見つからない画像を表示

IOS 8以降をサポートし、Xcode 7で構築されたアプリがあり、起動画面にXIBを使用しています(起動画像はありません)。このビューには、アプリのバージョンを持つ単一のUILabel、およびImages.xcassetsに存在する画像を含む2つのUIImageView:ロゴとスプラッシュ画像が含まれています。

アプリケーションを起動するとUILabelとロゴの画像は正しく表示されますが、iOS 9のiPad Air 2でアプリを実行するとスプラッシュ画像は表示されません。私はiPad 2、iPad Air、iPad Air 2用のiOS 8とiOS 9を実行しているAirとMiniでテストしましたが、それらの画像はすべて正しく表示されます。

何が起こっているのか理解できるかどうかを確かめるためにいくつかの基本的なトラブルシューティングを実行しましたが、それを解決することができず、うまくいっているイメージと失敗しているイメージの違いはwhenです。資産に追加しました...

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

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

  • スプラッシュイメージのUIImageViewをロゴイメージも使用するように設定すると、ロゴイメージがビューの正しい場所に表示されます。これは私がその見解が非難ではないと仮定することにもつながります。

  • 私がスプラッシュイメージビューで使用しているUIImageは、アプリケーションの他の場所で使用されていて、それらの他のビューでは問題なく表示されています(ロゴ画像もアプリケーションの他の場所で使用され、問題なく表示されます)。だから私はその画像が有効であり、それが他のビューに現れることは問題ではないと仮定している。

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

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

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

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

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

この最後の3つのステップで、プロジェクトファイルの有効期間内の特定の時点の後に追加された画像に問題があると私は信じます。昨日私がXcode 7にアップデートしたとき、スプラッシュ画像はもともとXcode 6に追加されましたが、ロゴ画像(Xcode 6にも追加された)は数か月前に追加されました。

私はロゴ画像とスプラッシュ画像のjsonファイルを調べましたが、それらは同じフォーマットを持っているように見えます。私はpbxprojファイルを調べて違いを探しましたが、何も見えません。

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

294
MFW

一度オフにしてからもう一度オンにします。

真剣に、デバイスを再起動してください - それは私にとってそれを修正したものです。

これはうまくいかなかったものです:

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

過去の観測値:

他の人と同じように、

  • シミュレータでうまく動作する
  • デバイス(iPhone 5S、iPad Air)で作業するために使用されます
  • コードの変更はありません(git reset --hard HEADで検証済み)が、まだ動作を停止しました。

最初のビルドが機能しなくなったときに思い出したのは、実行中のiPhoneのプラグを抜いたことです。 (関連性があるかどうかわからない)

しかし、それを修正していないgit reset(すべてのきれいなステップがうまくいっていないことと合わせて)は、これがどこか他の場所にキャッシュされているに違いないということを教えてくれます。多分.gitignoredファイルの1つにありますか? (私は XcodeプロジェクトではGit ignore fileを使用しています

1つのUIImageView(3つを持つUIView)ではうまくいきましたが、他のものではうまくいかなかった1つの回避策は、イメージを.xcassetsファイルに入れることでした。プレーンイメージファイルに戻しても修正は元に戻りませんでした。 (本当にキャッシングエラーのようです。)

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

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

466
Aral Balkan

「私にとっての解決策は、ストーリーボードのUIImageViewに対して「グラフィックスコンテキストのクリア」ボックスのチェックが外されていることを確認することでした。これを変更するだけで問題は解決しました。」他の解決策は私には役立たなかった。 Apple開発者フォーラム から入手してください

enter image description here

144
NikLanf

私はiPhone 6で全く同じ問題を抱えていました。

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

それがなぜうまくいかないのか見つけることができませんが、私は解決策を見つけました:単にあなたのimages.xcassetsの外にあなたのファイルを置き、Interface Builderでそのフルネーム(拡張子を付けて)を使う

splashScreen in storyboard sample

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

96
gbitaudeau

次の一連の操作で、Xcode 7.3.1およびiOS 9.3.4での問題が解決しました。

  1. あなたの作品をきれいにする(⌘+⇧+ K)
  2. Xcodeを閉じる
  3. IOSデバイスのハードリセット(電源+ホームボタンの再起動)
  4. Xcodeを再起動 - インデックス作成を終了し、準備ができたらデバイス上に構築します。
32
mayankk2308

他の多くの回答では、デバイスの再起動や再構築、再インストールが解決策となっています。

これらの答えは私達の何人かのために働くが、これらの仕事の理由はアプリがキャッシュされたスナップショットを「再取得」または「再構築」することを強制されるためです。

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

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

背景

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

@TimCamberによる this SO answer を読んだ後、私がはっきりしなかった理由は、もう少し調査とテストをするように促しました。

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

アプリはLaunch Screen StoryboardファイルからアプリのLaunch Screenの縦長と横長のスナップショットを作成し、(現在は)ここでアプリバンドルに保存します。

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

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

解決策

@ jagaの解決策に従って前述したように、文字通り必要なのは次のことだけです。

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

screenshot of relevant directories in Project Navigator in Xcode

  1. launch Screen StoryboardファイルのUIImageViewオブジェクトでその画像を参照します。

screenshot of Image View section for UIImageView under Attributes Inspector in Xcode

26
andrewbuilder

私は同じ問題を見ていました。デバイスを再起動して(iPhone 6)、アプリケーションをデバイスに再構築することだけが問題を解決しました。他にもたくさんのヒントや提案を試してみましたが、それ以外はうまくいきませんでした。再起動+再構築のみが役に立ちました。

21
Bruce L

私はTestFlightからインストールされたアプリのために同じを持っていました。 アプリを削除 - >それからiPhoneを再起動 - >それからアプリを再インストール 私のために働く。アプリを再インストールするか、デバイスを再起動するだけではうまくいきませんでした。

16
Petro Shm

私の解決策@iOS 11.x:

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

装置の電源を入れ直してみましたか? やりなさい。

8
Jakub Truhlář

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

8
Jim Rhoades

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

Reset content and Settings menu

7
andnil

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

6
Trinh Tran

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

私はそれを修正します。

  • ドライブデータを削除する

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

  • Xcodeを再起動

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

  • 5秒を再起動します。

Xcodeがメモリを使うのは悪いことだと思います。システムがXcodeのために小さなメモリを割り当てることがあります。

5
guozqzzu

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

最初のxcode clean de projectです。

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

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

4
oscar castellon

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

4
bonnie lapin

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

4
Sunly

ImageViewを選択してから、属性インスペクタのタブ> Image view> Image> Image Nameで画像の拡張子(.pngまたは.jpg)を削除します。

Launchscreen.storyboardでは、画像は表示されませんが、デバイス内にあります。これは私のために働きました。

3
Asha Antony

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

今私はちょうどiPhoneを再起動し、それは私のために働いています。

2
Amon

私の場合、私は イメージ名 でした。
LaunchScreen.xibに[email protected]という名前のイメージを追加しました。これは、テスト目的のためだけの私の古い起動画面の1つです。私はiPhone X Simulator上で構築していましたが、画像は表示されませんでした。

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

@2x-568hと同様に問題の一部だったようです。これは-812h@3xデバイスでは意味があります。

2
de.

重要 である必要があります。 Launch Screen File

enter image description here

2
SwiftDeveloper

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

2
KING

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

2
midhun p

Xcodeを再起動すると私のためにそれをやった。

何をした しない /それ:

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

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

1
JamieDass

私はimageView起動スクリーンのストーリーボードと同じ問題を抱えています。私はプロジェクトから写真の参照を削除し、私は自分の画像の名前を変更してプロジェクトに再度追加しました。すべてうまくいきました。

1
ostap_holub

プロジェクト画像を削除する2.画像名を変更する3.プロジェクトにファイル画像を追加する

それは私のために働きました。

1
Jesse

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

1
Tim Le

解決しました!

私にとってうまくいったことは、LaunchScreen.storyboardからViewControllerを削除し、新しいViewControllerを以下のように設定することでした。

初期View Controllerです

そのような単純な :)

次は私に役立ちました:

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

とても重要です :あなたのxibが他のタブで開かれていないことを確認してください。

1

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

1
Aproram

私もこの問題に遭遇しました。 SIMULATORのすべての内容と設定を消去することは私のために働きました。

0
skyecloude

私の場合、私はちょうどアプリのターゲットに行きます - >一般 - >アプリアイコンと画像の起動 - >画像ソースの起動それから私は画像を置くソースを選択します

0
Hoang Quan

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

0
gklka

私は私のために働いたシンプルだが過激な解決策を見つけました:

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

2 - 製品 - >クリーン

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

4 - 保存してビルド

LaunchScreen.storyboardが書き込みロックされていて保存できなかったか、奇妙なキャッシュプロセスによってブロックされていたようです。

0
Fox5150

"myProject"はImages.xcassetsから開始された多くの画像を含みます。しかし、私はプロジェクトから“ Assets.xcasset”を削除して復元した後、不足している画像に遭遇しました。

  1. 誤ってImages.xcassetsを削除するが
  2. "myProject"にImages.xcassetsを追加する

私はこの行方不明の画像の問題に出くわし、そして以下の方法を試みました:

  1. デバイスの電源を入れ直しますが、動作しません。
  2. 「クリーニング」の後にXcodeを使用してプロジェクトを「ビルド」してもうまくいきません。

私の問題を解決するための解決策:

  1. Images.xcassets内のすべての画像をXcodeを介して「Show in File Inspector」の「Target Membership」で「myProject」に戻し、通常の状態に戻します。
0
Wang3t

左側のメニューから画像ファイルを選択し、右側のユーティリティメニューから「ファイルインスペクタを表示」を選択します。ターゲットメンバーシップの下で、ターゲットが選択されていることを確認してください。ターゲットを選択して画像を追加しましたが、選択されなかった理由がわかりません。私はすべての解決策を試した、再起動、削除など誰も動作しません。これだけでうまくいきました。他の人に役立つことを願っています。

0
nfinfu