UIImageCihazdaki Başlatma Ekranında eksik görüntüleri görüntüleme


301

Xcode 7'de yerleşik iOS8 ve sonraki sürümleri destekleyen bir uygulamam var ve bir Başlatma Ekranı için XIB kullanıyorum (başlatma görüntüleri yok). Görünüm, uygulama sürümüne sahip tek bir UILabel ve her ikisi de Images.xcassets'te bulunan görüntülere sahip 2 UIImageViews içerir: Bir logo ve bir sıçrama görüntüsü.

Uygulamayı başlattığımda UILabel ve logo görüntüsü doğru görünüyor, ancak uygulamayı iOS9 ile bir iPad Air 2'de çalıştırdığımda açılış görüntüsü görünmüyor. İPad 2, iPad Air ve iPad Air 2 için iOS8 ve iOS9 çalışan bir Mini ve Air9 simülatörlerini test ettim ve görüntü bunların hepsinde doğru görünüyor.

Ben neler olduğunu anlamaya olabilir görmek için bazı temel sorun giderme ran ama bunu ben çalışıyor görüntü ve başarısız oluyor biri arasında görebileceğiniz tek fark çözmek mümkün olmamıştır zaman ben onu ekledi varlıklar...

İşte bildiklerimin bir özeti:

  • Açılış görüntüsü için UIImageView doğru yerde ve doğru boyutta. Bunu söyleyebilirim çünkü emin olmak için arka plan rengini yeşile ayarladım. Görünüm orada, ancak görüntü görünmüyor. Bu yüzden manzaranın suç olmadığını varsayıyorum.

  • UIImageView öğesinin sıçrama görüntüsünün logo görüntüsünü de kullanması, logo görüntüsünün görünüm için doğru yerde görünmesini sağlar. Bu da beni görüşün suçlu olmadığını varsaymaya itiyor.

  • Splash image görünümünde kullandığım UIImage, uygulamanın başka bir yerinde kullanılıyor ve bu diğer görünümlerde iyi görünüyor (logo resmi, uygulamanın başka bir yerinde de kullanılıyor ve iyi görünüyor). Bu yüzden görüntünün geçerli olduğunu ve diğer görünümlerde görünmesinin sorun olmadığını varsayıyorum.

  • Xcassets dosyasındaki logo ve sıçrama için UIImages ayarlarının aynı olduğunu doğruladım. Varsayılan olarak görüntülenen Evrensel, Herhangi bir genişlik ve yükseklik, çoklu ölçek faktörleri olarak ayarlanırlar. Bir fark var - sıçrama görüntüsünde sadece 1x ve 2x varken logoda 1x, 2x ve 3x ölçekler var, ancak UIView'da yalnızca 1x ve 1x ve 2x değerleriyle UIImages kullanmayı denedim ve çalışıyorlarsa bir süre önce projeye eklendi).

  • Farklı boyut veya formatta (PNG ve JPG) başka bir görüntüyü xcassets'ime eklemek ve bu UIImage'ı sıçrama görüntüsü için kullanmak da görüntülenemiyor.

  • XIB dosyasına başka bir UIImageView eklemek ve zaten xcassets içinde olan bir UIImage tahsis etmek çalışır, görüntü yükleme ekranında görünür.

  • Logo için kullanılan görüntü dosyalarının kopyalanması ve yeniden adlandırılması ve projeye eklenmesi, ardından açılış görünümünde bu UIImage'ın kullanılması da görüntülenemez.

  • Projeyi temizlemeyi, geliştirme makinesini yeniden başlatmayı ve Air 2'den uygulamayı silmeyi ve bir sorun olması durumunda yeniden yüklemeyi denedim.

Bu son üç adım, proje dosyasının kullanım ömründe belirli bir noktadan sonra eklenen görüntülerle ilgili bir sorun olduğuna inanmamı sağlıyor. Dün Xcode 7'ye güncellediğimde, sıçrama görüntüsü başlangıçta Xcode 6'ya eklendi, ancak logo görüntüsü (Xcode 6'da da eklendi) birkaç ay önce eklendi.

Logo görüntüsü ve splash görüntüsü için json dosyalarını inceledim ve aynı formata sahip gibi görünüyorlar. Ben de farklılıkları arayan pbxproj dosyası üzerinden trol ettik ve ben göremiyorum.

Bu yüzden, açılış ekranının neden Air 2'ye eklediğim bu yeni görüntüleri göstermeyebileceğine dair bir fikrin olup olmadığını merak ediyordum? Görünmeyen görüntülerle ilgili okuduğum diğer sorular, ya Başlatma Görüntüleri ile ya da ikisi de alakalı görünmeyen ilişkili sınıfları olan XIB dosyalarındaki görüntülerle ilgili gibi görünüyor.


1
Bu konuda cevap için anlamı - geri geldi ve verilen cevapları okumak, sonra Xcode döndü ve onları denemek için UIImageView ve görüntü yeniden. Bu kez, herhangi bir değişiklik yapmadan çalıştı. Neden olduğuna dair hiçbir fikrim yok - Xcode'un aynı sürümü, daha önce uygulamayı yeniden başlattım, yeniden oluşturdum, temizledim ve kaldırdım, aynı iOS, aynı Mac OS, sadece çalıştı. Maalesef, çözümlerden herhangi birinin yardımcı olup olmadığını doğrulayamadım.
MFW

Benim için verilen cevaplardan HİÇBİRİ sorunu çözmedi. Simülatör, iPhone 5, iPhone 5 SE, iPad 4, LaunchScreen.xib'imde UIImageView'i doğru bir şekilde gösteriyor, iPad Air 2 bunu göstermiyor. Tüm aygıtlar yeniden yüklendi, tüm aygıtlara yeniden yüklendi. Davranış kalır.
Christian

Hey 130+ oyu verilmiş yanıtı kabul etmelisiniz.
Khanh Nguyen

Khanh ile katılıyorum, çoğu için çalışıyor !!
gunjot singh

@ MFW, CEVAP FFS'Yİ KABUL EDİN! U'yu KOKLARA RAPORLAMA.
GeneCode

Yanıtlar:


476

Kapatıp tekrar açın.

Cidden, cihazı yeniden başlatın - bu benim için düzeltti.

İşte işe yaramayan:

  • DerivedData'yı Temizleme
  • Projeyi temizleme
  • Uygulamanın cihazdan kaldırılması
  • Xcode yeniden başlatılıyor
  • Bilgisayarı yeniden başlatma

Eski gözlemler:

Tıpkı diğerleri gibi,

  • Simülatörde iyi çalışıyor
  • Cihazlarda çalışmak için kullanılır (iPhone 5S, iPad Air)
  • Kod değişikliği yok (git reset --hard HEAD ile doğrulandı), ancak çalışmayı durdurdu.

Çalışmayı bıraktığı ilk yapıyı tetiklediğimi hatırladığım şey, çalışırken iPhone'un fişini çekmekti. (İlişkili olup olmadığından emin değilim.)

Ancak, git sıfırlama düzeltmiyor (çalışmayan tüm temiz adımlar ile birlikte) bana bunun başka bir yerde önbelleğe alınması gerektiğini söylüyor. Büyük olasılıkla .gitignored dosyalarından birinde? ( Xcode projeleri için Git yoksayma dosyasını kullanıyorum )

Bir UIImageView (üç olan UIView'da) için çalışan ancak diğerleri için çalışmayan bir geçici çözüm, görüntüyü bir .xcassets dosyasına koymaktı. Düz görüntü dosyasına geri dönmek düzeltmeyi geri almadı. (Gerçekten bir önbellek hatası gibi geliyor.)

GÜNCELLEME: Bkz. Üstteki - cihazı yeniden başlatmak onu düzeltir. Cihazın kendisinde yanlış bitmap verilerinin önbelleğe alındığını hissediyorum.

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


31
Sadece simülatörü yeniden başlatmak benim için yaptı. Çılgın!
FractalDoctor

1
Teşekkür ederim! Bu benim için de düzeltildi.
CodenameDuchess

6
App Store kullanıcılarının da aynı sorunu yaşayacağını düşünüyor musunuz?
Adam Waite

1
@danielstorm asla dürüst olmayı öğrenmedi
Adam Waite

2
Ne sakat bir böcek, elma gg. Telefonumu yeniden göndermek benim için çalıştı, teşekkürler.
Jacob King

151

"Benim için çözüm, film şeridindeki UIImageView için" Grafik Bağlamını Temizle "kutusunun işaretinin kaldırıldığından emin olmaktı. Sadece bunu değiştirmek benim için düzeltildi." Benim için başka hiçbir çözüm işe yaramadı. Apple geliştirici forumundan aldım

resim açıklamasını buraya girin


2
Kahretsin, bunu denemeyi asla düşünemezdim. Xcode 7.3.1 (7D1014) ve iOS 9.3.2 Developer Beta 3 ile Simülatörü ve Cihazı düzeltir
Nuthatch

3
Bunun benim için de işe yaradığını onaylayabilirim. Xcode 7.3 ve iOS 9.3.2.
Torbjørn Kristoffersen

1
Hatta benim zaten kontrol ile - hile kontrol ve tekrar kontrol yaptı!
lonesomewhistle

1
Cevabınız için güzel +1, Xcode 8 ve iOS 10'da da çalışıyor
Skovie

1
Bu doğru cevap. Cihazda iOS 11'de kanıtlanmıştır.
jberlana

99

Bir iPhone 6'da da aynı sorunu yaşadım.

Çok garip olan şey, resimlerimden başka bir görüntü kullanabilmemdi. Aynı boyut, sıkıştırma, renk boşluğuna sahip kasetler ...

Neden çalışmadığını bulamıyorum ama bir çözüm buldum: Dosyanızı images.xcassets'inizin dışına koyun ve tam adını (uzantısıyla) Interface Builder'da kullanın

film şeridi örneğinde splashScreen

Umarım bu yardım!


1
Denediğim ilk şey buydu, ama benim için işe yaramıyor.
Paul Slocum

Bu benim için çalıştı; Teşekkürler. Keşke neden sadece xcassets dosyalarında bazı görüntüler için çalıştığını bilsem ...
Christopher King

Bu benim için işe yarıyor, ancak şimdi görüntü veya etiket özellikleri hiç güncellenmiyor. Temiz bir ürün işleminden sonra bile. Burada bir hata
Philip Borges

Uygulamanın silinmesinden sonra iPhone 6s yeniden başlatıldığında iş yaptı. Bundan önce aşağıdaki NikLanf çözümü "Grafik Bağlamını temizler" de kontrol edildi.
Matthew Ferguson

Bu çalışıyor. Nedeni, başlatma ekranı gösterildiğinde .xcasset nedeniyle henüz yüklenmediğini düşünüyorum. Bunu düşünürseniz, lansman ekranı bunun için - ios'un xcasset içeren uygulama içeriğini yüklemesi için bekleme süresi. Tahminimce uygulamanın kök klasöründeki her şey ilk olarak yüklenecek.
GeneCode

33

Aşağıdaki işlem sırası, Xcode 7.3.1 ve iOS 9.3.4'te benim için sorunu düzeltti:

  1. Yapınızı Temizle (⌘ + ⇧ + K)
  2. Xcode'u kapat
  3. Donanım Sıfırlaması iOS Cihazı (Power + Home Düğmesi yeniden başlatılıyor)
  4. Xcode'u yeniden başlatın - hazır olduğunda endekslemenin bitmesini ve cihazda oluşturulmasını sağlayın.

Günümü kurtardım! Teşekkürler!
Zack Zhu

Çalışmış. Adım 2 ve 4'ü yapmadım, Belki de sadece iOS cihazının Sert Sıfırlaması gerekli, herkes bunu onaylayabilir mi?
Timothy LJ Stewart

@ TimothyL.J. İkinci Adım 4 ve 4, benim için oldukça can sıkıcı olduğu için attığım sadece daha fazla ihtiyati adımdı - bu yüzden emin olmak için. Bence (tipik olarak) yapıyı etkilemedikleri için gereksiz olabileceklerini söylemekte haklısınız.
mayankk2308

Xcode 8 Swift 3.0 Kapatma veya Sert Sıfırlama her seferinde çalışan tek şeydir ve her yeni varlık eklendiğinde yapılması gerekir. DerivedData silinmez. Ancak, görüntü simülatörde düzgün çalışıyor. Bu benim zamanımın çoğunu boşa harcadı, @MayankKumar'a çözüm için teşekkür ederim.
Timothy LJ Stewart

Bir cazibe gibi çalıştı
lborgav

27

Diğer birçok yanıt, aygıtların yeniden başlatılmasını ve / veya yeniden oluşturma ve / veya yeniden yüklemenin çözüm olduğunu göstermektedir.

Bu cevaplar bazılarımız için işe yarar olsa da, bu çalışmanın nedeni, uygulamanın önbelleğe alınmış anlık görüntüleri "yeniden almaya" veya "yeniden oluşturmaya" zorlamasıdır.

Önbelleğe alınmış anlık görüntüler, destek panosu verileri, film şeridi görüntüleri içeren varlık kataloğu da dahil olmak üzere belleğe yüklenmeden önce görüntüler sunmak için kullanılır.

@Jaga tarafından verilen bu SO yanıtı , cihazdaki Başlatma Ekranında (ancak simülatörde değil) UIImageViews'ın eksik olmasının nedenini değil, çözümü sağlar.

Arka fon

Son zamanlarda "Launch Screen.storyboard" dosyamda özel bir yazı tipi kullanmaya çalıştım.

@TimCamber'in bu SO cevabını okuduktan sonra netleşemememin nedeni, biraz daha araştırma ve test yapmamı istedi.

Açılış Ekranı Storyboard dosyama özel bir yazı tipinin dahil edilmemesinin nedeni, bir varlık kataloğundaki görüntünün dahil edilmemesinin aynı nedenidir ...

Uygulama, Başlatma Ekranı Storyboard dosyanızdan uygulamanın Başlatma Ekranının dikey ve yatay anlık görüntülerini hazırlar ve (şu anda) uygulama paketinize buraya kaydeder:

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

Bu işlem, özel yazı tipleri ve varlık kataloğu da dahil olmak üzere, destekleyici dosyalar yüklenmeden önce tamamlanır.

Çözüm

Yukarıda @ jaga'nın çözümünü izleyerek belirtildiği gibi, kelimenin tam anlamıyla gerekli olan tek şey:

  1. (eski okul) uygulamanızın paketine bir resim dosyası (.PNG) ekleyin (aşağıdaki ekran görüntüsünden de görebileceğiniz gibi resim dosyasını Görüntüler alt dizinindeki Desteklenen Dosyalar alt dizinine ekledim) ve

Xcode'daki Project Navigator'daki ilgili dizinlerin ekran görüntüsü

  1. Başlangıç ​​Ekranı Storyboard dosyasındaki UIImageView nesnenizdeki bu görüntüye bakın ...

Xcode'daki Attributes Inspector altında UIImageView için Image View bölümünün ekran görüntüsü


Bir süredir bununla güreştiğim için teşekkürler. Bu benim için işe yarıyor.
James Laurenstin

benim için doğrudan çalıştı. bu doğru cevap olmalı
Mohammad Shraim

Lansmanda IOS varlıkları derleyemedi, bu nedenle görüntünüzü paket halinde çalışmaya yerleştirdi. Teşekkürler.
icould

Şimdiye kadarki en iyi cevap. Bunu ekleyeceğim: görüntü, uygulama paketinin kök dizininde olmalıdır. Aksi takdirde, görüntüleri bir alt dizinde saklarsanız "Media / launch_v1_200_mod.png" tam yolunu vermeniz gerekir.
MoVod

1
Ben de aynısını yaptım. Benim app zaten canlı ama sorun bazen görüntüyü gösteriyor ve bazen ekranın ortasında beyaz renk ile kare gösterir
Punit

21

Aynı sorunu görüyordum. Cihazı (iPhone 6) yeniden başlatmak ve uygulamayı cihaza yeniden oluşturmak, onu düzelten tek şey. Diğer birçok ipucu ve öneri denedim ama başka bir şey çalıştı. Yalnızca yeniden başlatma + yeniden oluşturma yardımcı oldu.


Kullanıcının uygulamayı AppStore'dan güncelleyip güncellemeyeceği nasıl görünecek? Cihazını yeniden başlatması gerekecek mi?
kokos8998

17

Çözümüm @IOS 11.x:

  • .jpgBunun yerine resim kullan .png. Bence görüntü dosya boyutu önemlidir;
  • (İsteğe bağlı) Görüntü dosyasını proje dizinine koymak yerine .xcassets;

3
Görüntü dosyasını .xcassetsyardımın dışına koymak
Husam

@Husam Ben gerçekten sadece dosya boyutu önemli olduğunu düşünüyorum. İki resim içeren bir açılış ekranım var: büyük bir (400 + KB .png) ve bir logo (10 + KB .png, .xcassets içinde). Logo her zaman normal görünür, ancak büyük olan görünmez.
Ke Yang

Haklısın ... Yorumumdan sonra sorun başka bir resim ekledikten sonra tekrar ortaya çıktı. Yardımınız için teşekkürler
Husam

2
Sonra jpg görüntüsünü kullanarak talimatlarınızı takip ve çalıştı
Husam

Şeffaflığa ihtiyacınız varsa ne olur?
JCutting8

16

TestFlight'dan yüklenen uygulama için de aynısı vardı. Uygulamayı sil -> sonra iPhone'u yeniden başlat -> sonra uygulamayı yeniden yükle benim için çalışıyor. Sadece uygulamayı yeniden yükleyin veya cihazı yeniden başlatmak işe yaramadı.


Benim için işe yarayan tek şey bu - 90 dakika önce görmüş olsaydım!
KML

keşke 4 saat önce görmüş
olsaydım

Benim için de çalıştı, ama sorun garip: |
Nishu_Priya

8

Aynı sorunu yaşıyordum, ancak cihazı yeniden başlatmak yardımcı olmadı. Benim için işe yarayan, UIImageView'i lansman storyboard'umdan silmek ve yeni bir tane eklemekti.



7

Benim için işe yarayan şey , Simülatör menüsünden İçeriği ve Ayarları Sıfırla ... ' yı seçmekti.

İçeriği ve Ayarlar menüsünü sıfırla


6

Görüntüleri Image.xcassets'ten çıkarın ve tekrar projeye ekleyin. Benim için çalıştı.


Bu, yalnızca uygulamayı Başlangıç ​​Ekranı anlık görüntülerini yeniden oluşturmaya zorladığınız için çalışır, ancak sorunun bir çözümü veya nedeni değildir.
andrewbuilder

6

Mobil cihazdan uygulamayı kaldırın ve mobil cihazınızı yeniden başlatın ve uygulamayı tekrar yükleyin. şimdi sorunlar çözülecek


5

İPhone 5s cihazını kullanıyorum, bu sorunu da karşılıyorum.

Ben düzeltmek:

  • Drive Verilerini Kaldır

  • Projeyi temizle

  • Xcode'u yeniden başlat

  • Projeyi cihazımdan kaldır

  • 5'leri yeniden başlatın.

Ben Xcode bellek kullanmak yanlış bir şey olduğunu düşünüyorum, sistem Xcode için küçük bir bellek tahsis olabilir neden Xcode öğle görüntü çizim başarısız oldu (Bilgisayarımda, Xcode yakın olmadan birkaç hafta koştu var)


Bilmiyorum, ama işe yaradı .. iyi gibi. Paylaştığınız için teşekkürler.
Arpit B Parekh

4

İPad ve iPhone cihazlarıyla Xcode 7'de de tam olarak bu problemi yaşadım. Bir anlam ifade etmese de, çoğu zaman yalnızca Görüntü'yü değil, görüntü görünümündeki Vurgulanan görüntüyü de görüntülerimdeki aynı görüntüye ayarlayarak başardım.


Bana da yardım edilecek gibi görünüyor
rafalkitta

4

Bence başlatma ekranı yalnızca Assets.xcassets içindeki görüntüyü destekliyor.


Yukarıdaki tüm cevapları denedim ve hiçbiri benim için çalışmadı. Ancak bu cevap sorunu çözdü.
Ercan Çelik

4

benim için çalıştı.

Xcode clean de projesinde ilk.

Simülatörü kullanıyorsanız uygulamayı silin ve yeniden başlatın.

Bir cihaz kullanıyorsanız uygulamayı silin ve cihazı yeniden başlatın.


3

Xcode'u yeniden başlatmak benim için yaptı.

What did not bunu:

  • Derleme klasörünü temizle
  • Cihazı veya simülatörü yeniden başlat (resim ikisinde de görünmüyordu)

3

ImageView öğesini seçin ve ardından nitelik denetçisi sekmesi> Görüntü görünümü> Görüntü> Görüntü Adı öğesinden görüntü uzantısını (.png veya .jpg) kaldırın.

Launchscreen.storyboard üzerinde görüntü görünmez ancak aygıtta orada olur. Bu benim için çalıştı.


Bu da benim sorunumdu. Garip bir şekilde bazı cihazlarda rastgele çalıştı. XIB / Storyboard düzenleme için Xcode 9.4 ile Xamarin-Project ...
fl034

2

İOS'un bir hatası gibi görünüyordu. Bazen sistem animasyonu yok oldu.

Şimdi sadece iPhone'u yeniden başlatıyorum ve benim için çalıştı.


2

Benim durumumda görüntü adıydı . LaunchScreen.xib
adlı bir resmi Default-568h@2x.pngekledim - eski deneme ekranlarımdan biri sadece test amaçlı. İPhone X Simulator'ı inşa ediyordum, görüntü ortaya çıkmadı.

Adı nötr bir şeyle değiştirmek (MyImage.png) sorunu çözdü.

Görünüşe göre @2xsorunun yanı sıra -568h. Bir -812h@3xcihazda mantıklı .


2

Bu çok önemli Boş olmalı !Launch Screen File

resim açıklamasını buraya girin


8
XIB film şeridini lansman için kullanıyor, bu cevap işe yaramayacak.
17:58


1

Bir görüntü ekranı lansmanı imageView ile aynı sorunu yaşıyorum. Resim referansını projeden kaldırdım, resmimi yeniden adlandırdım ve tekrar projeye ekledim. Hepsi mükemmel çalışıyor.


1

Ayrıca 1. proje görüntüsünü silmek 2. görüntü adını değiştirmek 3. projeye dosya görüntü eklemek

Benim için çalıştı.


1

Bu sorunu bir iPhone 6'da iOS 10'da ve ayrıca Simulator'da yaşadım. Resmim bir klasördeydi ve sorun bu gibiydi. Görüntüyü Xcode'daki klasörden kaldırdım ve sorunu çözen projenin temel dizinine koydum.


1

Ben de aynı şeyi yaşıyorum. Görüntü çözünürlüğünü 300 piksel / inç, 72 olarak değiştiriyorum. Benim için çalışıyor.


1

Sonra bana yardımcı oldu:

  • "Başlatma Ekranı Dosyasını" başka bir xib olarak değiştir
  • uygulamayı çalıştır
  • xib'i geri değiştir

Ayrıca çok önemli : xib'in başka bir sekmede açılmadığından emin olun, bu da buna neden olabilir!


1

Benim için çalışan basit ama radikal bir çözüm buldum:

1 - Dosyayı silin: LaunchScreen.storyboard ve çöp kutusuna taşıyın.

2 - Ürün -> Temiz

3 - LaunchScreen.storyboard adlı yeni bir başlatma ekranı dosyası oluşturun ve resimlerinizi içine koyun

4 - Kaydet ve inşa et

Karmaşık yöntemleri saatlerce denedikten sonra benim için çalıştı ... Görünüşe göre LaunchScreen.storyboard'um yazma kilitli ve kaydedilemedi veya garip bir önbellekleme işlemi bunu engelliyordu.


1

Resim adı sorun. Başlangıç ​​ekranı film şeridinde kullanılan görüntü adını yeniden adlandırın. Alfasayısal dışında bir karakter kullanmadığınızdan emin olun ("_- & @" kullanmayın) Benim için bir cazibe gibi çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.