UIImageView gambar yang hilang di Layar Luncurkan pada perangkat

301

Saya memiliki aplikasi yang mendukung iOS8 dan yang lebih baru, dibangun di Xcode 7 dan saya menggunakan XIB untuk Layar Peluncuran (Saya tidak memiliki gambar peluncuran). Tampilan berisi satu UILabel dengan versi aplikasi, dan 2 UIImageViews dengan gambar yang keduanya ada di Images.xcassets: Sebuah logo dan gambar splash.

UILabel dan gambar logo muncul dengan benar ketika saya meluncurkan aplikasi, tetapi gambar percikan tidak jika saya menjalankan aplikasi pada iPad Air 2 dengan iOS9. Saya telah menguji pada Air dan Mini yang menjalankan iOS8, dan simulator iOS9 untuk iPad 2, iPad Air, dan iPad Air 2 dan gambar muncul dengan benar di semua itu.

Saya menjalankan beberapa pemecahan masalah dasar untuk melihat apakah saya bisa mencari tahu apa yang sedang terjadi, tetapi saya belum dapat menyelesaikannya dan satu-satunya perbedaan yang dapat saya lihat antara gambar yang berfungsi dan yang gagal adalah ketika saya menambahkannya ke aktiva...

Berikut ini ikhtisar dari apa yang saya ketahui:

  • UIImageView untuk gambar splash berada di tempat yang benar, pada ukuran yang benar. Saya bisa mengatakan ini karena saya mengatur warna latar belakangnya menjadi hijau hanya untuk memastikan. Pemandangan ada di sana, tetapi gambar tidak muncul. Jadi saya berasumsi bahwa pandangan itu tidak bisa disalahkan.

  • Mengatur UIImageView untuk gambar splash juga menggunakan gambar logo membuat gambar logo muncul di tempat yang benar untuk tampilan. Ini juga membuat saya berasumsi bahwa pandangan itu tidak bisa disalahkan.

  • UIImage yang saya gunakan dalam tampilan gambar splash digunakan di tempat lain di aplikasi dan tampak bagus di tampilan lain (gambar logo juga digunakan di tempat lain di aplikasi dan tampak baik-baik saja). Jadi saya berasumsi bahwa gambar itu valid dan muncul di tampilan lain bukanlah masalah.

  • Saya telah mengkonfirmasi bahwa pengaturan UIImages untuk logo dan splash di file xcassets adalah sama. Mereka diatur ke Universal, Lebar dan tinggi apa pun, berbagai faktor skala, diterjemahkan sebagai standar. Ada satu perbedaan - logo memiliki skala 1x, 2x dan 3x sedangkan gambar splash hanya memiliki 1x dan 2x, tetapi saya juga telah mencoba menggunakan UIImages dengan hanya 1x, dan nilai 1x dan 2x di UIView dan mereka bekerja (jika ada ditambahkan ke proyek beberapa waktu lalu).

  • Menambahkan gambar lain dengan ukuran atau format yang berbeda (PNG dan JPG) ke xcassets saya dan menggunakan UIImage di UIImageView untuk gambar splash juga gagal ditampilkan.

  • Menambahkan UIImageView lain ke file XIB dan mengalokasikannya UIImage yang sudah ada di xcassets berfungsi, gambar muncul di layar memuat.

  • Menyalin dan mengganti nama file gambar yang digunakan untuk logo dan menambahkannya ke proyek kemudian menggunakan UIImage dalam tampilan splash juga gagal ditampilkan.

  • Saya telah mencoba membersihkan proyek, menyalakan kembali mesin pengembangan, dan menghapus aplikasi dari Air 2 dan menginstalnya kembali kalau-kalau ada masalah.

Tiga langkah terakhir ini membuat saya percaya bahwa ada beberapa masalah dengan gambar yang ditambahkan setelah titik tertentu dalam masa hidup file proyek. Sementara saya memperbarui ke Xcode 7 kemarin, gambar splash pada awalnya ditambahkan di Xcode 6, tetapi gambar logo (juga ditambahkan dalam Xcode 6) ditambahkan beberapa bulan sebelumnya.

Saya telah melihat file json untuk gambar logo dan gambar splash dan mereka tampaknya memiliki format yang sama. Saya juga melihat-lihat file pbxproj mencari perbedaan dan saya tidak bisa melihatnya.

Jadi saya bertanya-tanya apakah ada yang tahu mengapa layar peluncuran mungkin tidak menampilkan gambar-gambar baru yang saya tambahkan di Air 2 secara khusus? Pertanyaan lain yang telah saya baca terkait dengan gambar yang tidak muncul semuanya tampaknya berhubungan dengan Peluncuran Gambar, atau gambar dalam file XIB yang memiliki kelas terkait, yang keduanya tampaknya tidak relevan di sini.

MFW
sumber
1
Sudah bermaksud membalas ini - saya kembali dan membaca jawaban yang diberikan, kemudian kembali ke Xcode dan mengadaptasi ulang UIImageView dan gambar untuk mencobanya. Kali ini, ia bekerja tanpa perubahan. Saya tidak tahu mengapa - versi Xcode yang sama, saya restart, membangun kembali, membersihkan dan menghapus aplikasi sebelumnya, iOS yang sama, OS Mac yang sama, itu hanya berfungsi. Jadi sayangnya saya belum dapat memverifikasi apakah ada solusi yang akan membantu.
MFW
Bagi saya, TIDAK ada jawaban yang diberikan untuk menyelesaikan masalah. Simulator, iPhone 5, iPhone 5 SE, iPad 4 semuanya menampilkan UIImageView dalam LaunchScreen.xib saya dengan benar, iPad Air 2 tidak akan menampilkannya. Reboot semua perangkat, instal ulang pada semua perangkat. Perilaku tetap ada.
Christian
Hei, Anda harus menerima 130+ jawaban yang dipilih.
Khanh Nguyen
Saya setuju dengan Khanh, ini bekerja untuk sebagian besar !!
gunjot singh
@ MFW, MENERIMA FFS JAWABAN! IM PELAPORAN U KE COPS.
GeneCode

Jawaban:

475

Matikan jika dan nyalakan lagi.

Serius, nyalakan ulang perangkat - itulah yang diperbaiki untuk saya.

Inilah yang tidak berhasil:

  • Membersihkan DerivedData
  • Membersihkan proyek
  • Menghapus instalasi aplikasi dari perangkat
  • Mulai ulang Xcode
  • Nyalakan kembali komputer

Pengamatan yang lebih lama:

Sama seperti yang lain, itu:

  • Bekerja dengan baik di Simulator
  • Digunakan untuk bekerja pada perangkat (iPhone 5S, iPad Air)
  • Tidak ada perubahan kode (diverifikasi melalui reset git --hard HEAD), belum berhenti berfungsi.

Apa yang saya ingat memicu bangunan pertama di mana ia berhenti bekerja adalah mencabut iPhone saat sedang berjalan. (Tidak yakin apakah itu terkait.)

Namun, git reset tidak memperbaikinya (dikombinasikan dengan semua langkah bersih yang tidak berfungsi) memberi tahu saya ini harus di-cache di tempat lain. Sangat mungkin di salah satu file .gitignored? (Saya menggunakan file abaikan Git untuk proyek Xcode )

Satu solusi yang bekerja untuk satu UIImageView (di UIView yang memiliki tiga) tetapi tidak untuk yang lain adalah menempatkan gambar ke dalam file .xcassets. Mengembalikan ke file gambar biasa tidak membatalkan perbaikan. (Benar-benar terasa seperti kesalahan caching.)

UPDATE: Lihat top - me-restart perangkat adalah apa yang diperbaiki itu. Saya merasa bahwa data bitmap yang salah sedang di-cache pada perangkat itu sendiri.

Radar: http://openradar.appspot.com/23534818

Aral Balkan
sumber
31
Cukup restart simulator untuk saya. Gila!
FractalDoctor
1
Terima kasih! Ini memperbaikinya bagi saya juga.
CodenameDuchess
6
Apakah Anda pikir pengguna App Store akan mengalami masalah yang sama?
Adam Waite
1
@danielstorm tidak pernah terbukti jujur
Adam Waite
2
Bug yang terbelakang, gg apple. Mulai ulang ponsel saya berfungsi untuk saya, terima kasih.
Jacob King
151

"Solusi bagi saya adalah memastikan bahwa kotak" Menghapus Grafik Konteks "tidak dicentang untuk UIImageView di storyboard. Hanya mengubah ini untuk saya." Tidak ada solusi lain yang bekerja untuk saya. Dapat dari forum pengembang apel

masukkan deskripsi gambar di sini

NikLanf
sumber
2
Sial, aku tidak akan pernah berpikir untuk mencoba ini. Memperbaiki Simulator dan Perangkat dengan Xcode 7.3.1 (7D1014) dan iOS 9.3.2 Developer Beta 3.
Nuthatch
3
Saya dapat mengkonfirmasi ini juga bekerja untuk saya. Xcode 7.3 dan iOS 9.3.2.
Torbjørn Kristoffersen
1
Bahkan dengan milik saya sudah diperiksa - tidak memeriksa dan memeriksa ulang melakukan trik!
lonesomewhistle
1
+1 bagus untuk jawaban Anda, juga berfungsi di Xcode 8 dan iOS 10
Skovie
1
Ini jawaban yang benar. Terbukti di iOS 11, di perangkat.
jberlana
99

Saya memiliki masalah yang persis sama pada iPhone 6.

Fakta yang sangat aneh adalah bahwa saya dapat menggunakan gambar lain dari gambar saya. Xetset yang memiliki ukuran, kompresi, ruang warna yang sama ...

Saya tidak dapat menemukan mengapa itu tidak berhasil, tetapi saya menemukan solusi: Cukup letakkan file Anda di luar images.xcassets Anda dan gunakan nama lengkapnya (dengan ekstensi) di Interface Builder

splashScreen dalam sampel storyboard

Semoga bantuan ini!

gbitaudeau
sumber
1
Itu adalah hal pertama yang saya coba, tetapi tidak berhasil bagi saya.
Paul Slocum
Ini bekerja untuk saya; Terima kasih. Saya berharap saya tahu mengapa itu hanya bekerja untuk beberapa gambar dalam file xcassets ...
Christopher King
Ini bekerja untuk saya, tetapi sekarang properti gambar atau label tidak diperbarui sama sekali. Bahkan setelah tindakan produk bersih. Mengajukan bug di sini: bugreport.apple.com
Philip Borges
Restart iPhone 6s setelah penghapusan aplikasi berhasil. Sebelum itu solusi NikLanf di bawah "membersihkan Konteks Grafik" juga diperiksa.
Matthew Ferguson
Ini bekerja. Alasannya adalah saya pikir karena .xcasset belum dimuat saat layar peluncuran ditampilkan. Jika Anda memikirkannya, itulah gunanya launchscreen untuk - waktu tunggu bagi ios untuk memuat konten aplikasi, yang mencakup xcasset. Dugaan saya adalah meletakkannya di luar karena semua yang ada di folder root aplikasi akan dimuat terlebih dahulu.
GeneCode
33

Urutan operasi berikut memperbaiki masalah saya di Xcode 7.3.1 dan iOS 9.3.4:

  1. Bersihkan Bangunan Anda (⌘ + ⇧ + K)
  2. Tutup Xcode
  3. Hard Reset Perangkat iOS (Power + Home Button reboot)
  4. Luncurkan ulang Xcode - biarkan pengindeksan selesai dan bangun perangkat setelah siap.
mayankk2308
sumber
Selamatkan hari saya! Terima kasih!
Zack Zhu
Bekerja. Saya tidak melakukan langkah 2 dan 4, Mungkin hanya Hard Reset perangkat iOS diperlukan, adakah yang bisa mengkonfirmasi ini?
Timothy LJ Stewart
@ TimothyL.J.Stewart Langkah 2 dan 4 hanyalah langkah pencegahan yang telah saya ambil karena masalah ini cukup mengganggu bagi saya - jadi itu hanya untuk memastikan. Saya pikir Anda benar dalam mengatakan mereka mungkin tidak perlu karena mereka tidak benar-benar (biasanya) memengaruhi build.
mayankk2308
Xcode 8 Swift 3.0 Mematikan atau Hard Reset adalah satu-satunya hal yang berfungsi setiap saat, dan harus dilakukan setiap kali aset baru ditambahkan. Menghapus DerivedData tidak. Namun, gambar berfungsi dengan baik di simulator. Ini telah menghabiskan banyak waktu saya, terima kasih @ MayankKumar untuk solusinya.
Timothy LJ Stewart
Bekerja seperti pesona
lborgav
27

Banyak jawaban lain menyarankan untuk me-reboot perangkat dan / atau membangun kembali dan / atau menginstal ulang adalah solusinya.

Sementara jawaban ini bekerja untuk sebagian dari kita, alasan pekerjaan ini adalah karena aplikasi dipaksa untuk "mengambil kembali" atau "membangun kembali" snapshot yang di-cache.

Snapshots dalam cache digunakan oleh aplikasi untuk menyajikan gambar sebelum data pendukung dimuat ke dalam memori, termasuk katalog aset yang berisi gambar storyboard.

Jawaban SO oleh @jaga ini memberikan solusi, tetapi bukan alasannya, mengapa UIImageViews hilang di Layar Peluncuran pada perangkat (tetapi tidak dalam simulator).

Latar Belakang

Baru-baru ini saya mencoba menggunakan font khusus dalam file "Launch Screen.storyboard" saya.

Alasan saya tidak bisa menjadi jelas setelah membaca jawaban SO ini oleh @TimCamber, yang mendorong saya untuk melakukan sedikit riset dan pengujian.

Alasan bahwa font khusus tidak termasuk dalam file Storyboard Layar Luncurkan saya adalah alasan yang sama gambar dalam katalog aset tidak termasuk ...

Aplikasi ini menyiapkan snapshot potret & lansekap dari Layar Peluncuran aplikasi dari file Layar Peluncuran Storyboard Anda dan (saat ini) menyimpannya dalam bundel aplikasi Anda di sini:

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

Proses ini selesai sebelum semua file pendukung dimuat, termasuk font khusus dan katalog aset.

Larutan

Seperti disebutkan di atas dengan mengikuti solusi @ jaga, secara harfiah semua yang diperlukan adalah:

  1. (sekolah tua) menambahkan file gambar (.PNG) ke bundel aplikasi Anda (seperti yang dapat Anda lihat dari tangkapan layar di bawah ini, saya menambahkan file gambar di bawah subdirektori File Pendukung dalam subdirektori Gambar), dan

tangkapan layar direktori yang relevan di Project Navigator di Xcode

  1. referensi gambar itu di objek UIImageView Anda di file Launch Screen Storyboard ...

tangkapan layar bagian Tampilan Gambar untuk UIImageView di bawah Attributes Inspector in Xcode

andrewbuilder
sumber
Terima kasih, saya sudah bergulat dengan ini sebentar. Itu bekerja untuk saya.
James Laurenstin
bekerja untuk saya secara langsung. ini seharusnya jawaban yang benar
Mohammad Shraim
Pada Peluncuran iOS tidak dapat mengkompilasi aset sehingga menempatkan gambar Anda ke bundel berfungsi. Terima kasih.
icould
Jawaban terbaik sejauh ini. Saya akan menambahkan ini: gambar harus di direktori root aplikasi-bundel. Kalau tidak, Anda harus memberikan path lengkap "Media / launch_v1_200_mod.png" jika Anda menyimpan gambar dalam sub dir.
MoVod
1
Saya melakukan hal yang sama. Aplikasi saya sudah tayang tetapi masalahnya kadang-kadang menampilkan gambar dan kadang-kadang menunjukkan persegi dengan warna putih di tengah layar
Punit
21

Saya melihat masalah yang sama. Mem-boot ulang perangkat (iPhone 6) dan membangun kembali aplikasi ke perangkat adalah satu-satunya yang memperbaikinya. Saya mencoba banyak tips dan saran lain tetapi tidak ada yang berhasil. Hanya reboot + rebuild yang membantu.

Bruce L.
sumber
Bagaimana kelihatannya jika pengguna akan memperbarui aplikasi dari AppStore? Apakah dia perlu me-reboot perangkatnya?
kokos8998
17

Solusi saya @iOS 11.x:

  • Gunakan .jpggambar sebagai ganti .png. Saya pikir ukuran file gambar penting;
  • (Opsional) Letakkan file gambar di direktori proyek daripada .xcassets;
Ke Yang
sumber
3
Meletakkan file gambar di luar .xcassetsmembantu
Husam
@ Husam Saya benar-benar berpikir itu ukuran file yang penting. Saya memiliki layar peluncuran dengan dua gambar: yang besar (400 + KB .png) dan logo (10 + KB .png, di dalam .xcassets). Logo selalu muncul secara normal, tetapi yang besar tidak.
Ke Yang
Anda benar .. Setelah komentar saya masalah muncul lagi setelah menambahkan gambar lain. Terima kasih atas bantuan Anda
Husam
2
Kemudian ikuti instruksi Anda dengan menggunakan gambar jpg dan bekerja
Husam
16

Saya memiliki hal yang sama untuk aplikasi yang diinstal dari TestFlight. Hapus aplikasi -> lalu mulai ulang iPhone -> lalu instal ulang aplikasi berfungsi untuk saya. Cukup instal ulang aplikasi atau hanya me-restart perangkat tidak membantu.

Petro Shm
sumber
Ini adalah satu-satunya hal yang bekerja untuk saya - berharap saya telah melihatnya 90 menit yang lalu!
KML
Seandainya saya telah melihat ini 4 jam yang lalu
gerry.liang
Bekerja untuk saya juga, tetapi masalahnya aneh: |
Nishu_Priya
8

Saya mengalami masalah yang sama, tetapi memulai ulang perangkat tidak membantu. Apa yang berhasil bagi saya adalah menghapus UIImageView dari storyboard peluncuran saya dan menambahkan yang baru.

Jim Rhoades
sumber
8

Sudahkah Anda mencoba mematikan dan menghidupkan perangkat lagi? Lakukan.

Jakub Truhlář
sumber
7

Apa yang berhasil bagi saya adalah memilih Reset Konten dan Pengaturan ... dari menu Simulator

Atur ulang konten dan menu Pengaturan

andnil
sumber
6

Bawa gambar keluar dari Image.xcassets dan tambahkan lagi ke proyek. Ini berhasil untuk saya.

Trinh Tran
sumber
Itu hanya berfungsi karena Anda memaksa aplikasi untuk membuat ulang snapshot Layar Luncurkan, tetapi itu bukan solusi atau alasan untuk masalah tersebut.
andrewbuilder
6

Hapus aplikasi dari ponsel lalu restart ponsel dan instal aplikasi lagi. sekarang masalah akan terpecahkan

midhun p
sumber
5

Saya menggunakan perangkat iPhone 5s, juga memenuhi masalah ini.

Saya memperbaikinya dengan:

  • Hapus Data Drive

  • Bersihkan proyek

  • Mulai ulang Xcode

  • Hapus proyek dari perangkat saya

  • Mulai ulang 5s.

Saya pikir itu adalah sesuatu yang salah dari Xcode untuk menggunakan memori, sistem mungkin mengalokasikan sedikit memori untuk Xcode menyebabkan Xcode menggambar gambar makan siang gagal (Di komputer saya, Xcode telah dijalankan selama beberapa minggu tanpa ditutup)

guozqzzu
sumber
Saya tidak tahu, tapi berhasil .. senang. Terima kasih kawan untuk berbagi.
Arpit B Parekh
4

Saya juga punya masalah persis ini di Xcode 7 dengan perangkat iPad dan iPhone. Meskipun itu tidak masuk akal, saya dapat menyiasati sebagian besar waktu dengan mengatur tidak hanya Gambar tetapi juga gambar yang Disorot dalam tampilan gambar ke gambar yang sama di gambar saya. Xetset.

Bonnie Lapin
sumber
Tampaknya juga terbantu untuk saya
rafalkitta
4

Saya pikir launchscreen hanya mendukung gambar di Assets.xcassets.

Sunly
sumber
Saya mencoba semua jawaban di atas dan tidak ada yang bekerja untuk saya. Tetapi jawaban ini menyelesaikan masalah.
Ercan Celik
4

ini bekerja untuk saya.

Pertama dalam proyek xcode clean de.

Jika Anda menggunakan simulator, hapus aplikasi dan jalankan kembali.

Jika Anda menggunakan perangkat, hapus aplikasi dan restart perangkat.

castellon oscar
sumber
3

Restart Xcode melakukannya untuk saya.

Apa yang tidak melakukannya:

  • Bersihkan folder bangun
  • Mulai ulang perangkat atau simulator (gambar juga tidak terlihat)
Manuel
sumber
3

Pilih ImageView dan kemudian hapus ekstensi gambar (.png atau .jpg) di tab pemeriksa atribut> Tampilan gambar> Gambar> Nama Gambar.

Pada launchscreen.storyboard gambar tidak akan muncul tetapi akan ada di perangkat. Ini berhasil untuk saya.

Asha Antony
sumber
Ini juga masalah saya. Anehnya itu bekerja secara acak pada beberapa perangkat. Xamarin-Project dengan Xcode 9.4 untuk pengeditan
XIB
2

Sepertinya bug dari iOS. Seperti kadang-kadang animasi sistem menghilang.

Sekarang saya hanya me-reboot iPhone dan itu berfungsi untuk saya.

Amon Xu
sumber
2

Dalam kasus saya, saya adalah nama gambar .
Saya menambahkan gambar yang bernama [email protected]LaunchScreen.xib - salah satu layar peluncuran lama saya hanya untuk tujuan pengujian. Saya membangun pada iPhone X Simulator, gambar tidak muncul.

Mengubah nama menjadi sesuatu yang netral (MyImage.png) menyelesaikan masalah.

Tampaknya itu @2xadalah bagian dari masalah dan juga -568h. Yang masuk akal pada -812h@3xperangkat.

de.
sumber
2

Ini terlalu penting. Harus kosong !Launch Screen File

masukkan deskripsi gambar di sini

Pengembang Swift
sumber
8
Dia menggunakan storyboard XIB untuk diluncurkan, jawaban ini tidak akan berfungsi.
benck
2

Solusi sederhana adalah dengan menggunakan JPG, bukan PNG.

RAJA
sumber
1

Saya memiliki masalah yang sama dengan imageView papan luncur layar peluncuran. Saya menghapus referensi gambar dari proyek, saya mengganti nama gambar saya dan menambahkannya lagi ke proyek. Semua bekerja dengan sempurna.

ostap_holub
sumber
1

Juga dapat 1. menghapus gambar proyek 2. mengubah nama gambar 3. menambahkan file gambar ke proyek

Ini berhasil untuk saya.

Jesse
sumber
1

Saya punya masalah ini di iOS 10 pada iPhone 6 dan juga di Simulator. Gambar saya ada di folder dan sepertinya itu masalahnya. Saya menghapus gambar dari folder di Xcode dan meletakkannya di direktori dasar proyek yang memecahkan masalah.

JamieDass
sumber
1

Saya mengalami hal yang sama. Saya mengubah resolusi gambar dari 300 piksel / inci, ubah ke 72. Ini berfungsi untuk saya.

Tim Le
sumber
1

Berikutnya membantu saya:

  • ubah "Luncurkan File Layar" ke xib lain
  • jalankan aplikasinya
  • ubah xib kembali

Juga sangat penting : periksa apakah xib Anda tidak dibuka di tab lain, yang dapat menyebabkannya juga!

Vladimir Tolstikov
sumber
1

Saya menemukan solusi sederhana namun radikal yang berhasil untuk saya:

1 - Hapus file: LaunchScreen.storyboard dan pindahkan ke tempat sampah.

2 - Produk -> Bersih

3 - Buat file layar peluncuran baru bernama: LaunchScreen.storyboard dan letakkan gambar Anda di dalamnya

4 - Simpan dan bangun

Itu bekerja untuk saya setelah mencoba metode yang rumit selama berjam-jam ... Sepertinya LaunchScreen.storyboard saya sudah dikunci dan tidak bisa diselamatkan atau proses caching yang aneh memblokirnya.

Fox5150
sumber
1

Nama gambar adalah masalahnya. Ganti nama gambar yang digunakan di dalam papan luncur layar. Pastikan untuk tidak menggunakan karakter apa pun selain alfanumerik (jangan gunakan "_- & @") Bekerja untuk saya seperti pesona ..

Aproram
sumber