React Native'de iOS Başlatma ekranı


105

Bir React Native uygulamasıyla çalışıyorum ve özel bir başlatma ekranı ayarlamaya çalışıyorum ama yapamıyorum.

React Native, varsayılan olarak bir LaunchScreen.xib oluşturur, bu yüzden Images.xcassets içinde bir LaunchImage oluşturdum:

Images.xcassets içindeki LaunchImage

Ayrıca seçeneklerimde "Uygulama Simgeleri ve Başlatma Görüntüleri" altındaki "Ekranı Başlat" dosyasını değiştirmem gerektiğini okudum:

Görüntü seçeneklerini başlat

Bunu yaptıktan sonra, başlatma ekranım tamamen siyah oldu ve uygulama yüklendiğinde, hem üst hem de alt siyah çerçeveler var:

görüntü açıklamasını buraya girin

Bu yüzden React Native projemde başlatma ekranımı ayarlamak için ne yapmam gerektiğini bilmiyorum.

Biri bu sorunlarda bana yardım edebilirse minnettar olacağım.

Şimdiden teşekkürler.


İkinci ekran görüntünüzde Başlatma Ekranı Dosyası neden boş?
Stefan

1
Çünkü uygulamanın varlıklar dizinindeki resimleri kullanmasını istiyorsam boş bırakmam gerektiğini okudum
JV Lobo

Tamam sen haklısın. Daha iyi anlamak için: Üstteki siyah çerçeveden gelen metin sizden mi yoksa tepki mi gösteriyor?
Stefan

Bu React'ten. İlk başta siyah bir ekran gösteriliyor (bu başlangıç ​​ekranı olacaktı), ardından ekran görüntüsünde gösterdiğim metin ve metnin ardından uygulamam beliriyor. Bu metin, uygulamamın varsayılan React Native başlatma ekranına sahip olduğu zamandan önce de görünüyordu.
JV Lobo

1
cihazdan kaldırın, projeyi temizleyin ve tekrar yüklemeyi deneyin
LS_

Yanıtlar:


120

Bu konunun yardımıyla sorunu çözebildim: Başlatma Görüntüsü iOS uygulamasında görünmüyor (Images.xcassets kullanarak)

Bu yüzden, başka birine yardımcı olabilir diye derinlemesine açıklayacağım.

Öncelikle belirli görüntüler oluşturmanız gerekir. Bunun için kullandığım şey, bu şablon ve otomatik oluşturuculu bu web sayfasıydı: TiCons

görüntü açıklamasını buraya girin

Resimlerimi indirdiğimde, varlıklar / iphone klasörünün içindekileri aldım, sadece bunları aldım:

  • Default@2x.png (640x960)
  • Varsayılan-568h@2x.png (640x1136)
  • Varsayılan-667h@2x.png (750x1334)
  • Default-Portrait-736h@3x.png (1242x2208)
  • Varsayılan-Landscape-736h@3x.png (2208x1242)

Ayrıca aynı klasörde bu Contents.json dosyasına ihtiyacınız var, bir arkadaşımdan aldım:

{
  "images": [
    {
      "extent": "full-screen",
      "idiom": "iphone",
      "filename": "Default-568h@2x.png",
      "minimum-system-version": "7.0",
      "orientation": "portrait",
      "scale": "2x",
      "subtype": "retina4"
    },
    {
      "extent": "full-screen",
      "idiom": "iphone",
      "filename": "Default-667h@2x.png",
      "minimum-system-version": "8.0",
      "orientation": "portrait",
      "scale": "2x",
      "subtype": "667h"
    },
    {
      "extent": "full-screen",
      "idiom": "iphone",
      "filename": "Default-Landscape-736h@3x.png",
      "minimum-system-version": "8.0",
      "orientation": "landscape",
      "scale": "3x",
      "subtype": "736h"
    },
    {
      "extent": "full-screen",
      "idiom": "iphone",
      "filename": "Default-Portrait-736h@3x.png",
      "minimum-system-version": "8.0",
      "orientation": "portrait",
      "scale": "3x",
      "subtype": "736h"
    },
    {
      "extent": "full-screen",
      "idiom": "iphone",
      "filename": "Default@2x.png",
      "minimum-system-version": "7.0",
      "orientation": "portrait",
      "scale": "2x"
    }
  ],
  "info": {
    "version": 1,
    "author": "xcode"
  }
}

Yani, bu noktada adında bir klasör oluşturdu LaunchImage.launchimage içeride Images.xcassets benim Tepki Yerli projede ve görüntüler ve kaydetme klasörünün Contents.json içindeki dosyaya:

görüntü açıklamasını buraya girin

İkinci olarak , projenizi Xcode'da açmanız ve "Genel" ayarlarda, " Uygulama simgeleri ve Başlatma Resimleri " altında " Ekran Dosyasını Başlat " seçeneğini boş bırakmamız gerekir (ayrıca projemizin içindeki LaunchScreen.xib dosyasını silebiliriz. ) ve ardından " Varlık Kataloğunu Kullan " ı tıklayın . Bir modal açılacak, katalog Görsellerini Taşımayı seçiyoruz

görüntü açıklamasını buraya girin

Şimdi, " Görüntü Kaynağını Başlat " seçicisinde, daha önce oluşturduğumuz LaunchImage (görüntülerimizin bulunduğu) klasörü seçebiliriz :

görüntü açıklamasını buraya girin

Bunu Brand Assets yerine seçeriz ve Brand Assets klasörünü silebiliriz .

Bu noktada, React Native uygulamamızı özel başlatma görüntülerimizle çalıştırabileceğiz:

görüntü açıklamasını buraya girin

Sözde kolay bir görev için biraz karmaşık göründüğünü biliyorum, ancak bunun hakkında çok şey okuduktan sonra, sıçrama resimlerimi çalıştırabilmemin tek yolu buydu, bu yüzden toplulukla paylaşmak istedim.


Resimlerin .png olması gerekiyor mu .jpg kullanmaya çalışıyorum
Adam Katz

.Jpg resimleri ile denemedim. Belki sadece .png ile çalışır
JV Lobo

Teşekkürler xcode'da aldığım hata, dosyanın geçerli bir dosya uzantısına sahip olmamasıdır, bu yüzden jpg'nin neden işe yaramayacağını
Adam Katz

1
5 seçeneğin hepsine sahip olmanız gerekiyor mu, uygulamam peyzajda kullanılmak üzere tasarlanmadı, bu yüzden onu dışarıda bıraktım ama çalışmıyor, bu yüzden merak ediyorum
Adam Katz

1
Bundan sonra hala sorun yaşadım ve orijinal başlatma ekranının gösterilmesini durdurmak için uygulamayı simülatörden silmem gerekti.
Dan G Nelson

16

Uygulamayı simülatörden sildiğinizden emin olun. Ardından projenizde bir temizlik yapın.


uygulamayı simülatörden silmek benim için çalışıyor. teşekkürler
Andy

Sen benim hayat kurtarıcımsın Çok teşekkür ederimyyyyyyyy.
durdurun

9

Yeni bir başlatma ekranının nasıl oluşturulacağına dair SO içeren çözümlerde bu yanıtlara çokça bakıyordum. Demek istediğim, bir dakika düşünelim.

Yeni bir react-native projesi oluşturduğumuzda, başlangıç ​​ekranı için ne görüyoruz?

> Facebook'un varsayılan başlatma ekranı

Bu beni düşündürdü, Bunu nasıl yaptılar?

Yarattılar LaunchScreen.xib

Bunun bir sebebi olmalı diye düşünüyorum. Bu yüzden LaunchScreen.xib, "React Native ..." varsayılan metnine veya yazılan her şeye girdim ve bir değişiklik yaptım. Başlatma ekranının düzenlemelerimi yansıttığını görmek için uygulamayı bir kez daha çalıştırdım.

Çözüm 1 Düzen mevcut LaunchScreen.xib

2.Çözüm Kendiminkini yarat

Ben de öyle yaptım, bu cevabı yazmak, kendi cevabımı nasıl oluşturacağımı öğrenmekten daha uzun sürdü. Both of these solutions are compatible with all the devices.

Aşama 1:

Sil LaunchScreen.xib

Adım 2:

tıklayın images.xcassets tıklayın boş alana sağ tıklama **import**ardından eklemek istediğiniz resmi seçin. görüntü açıklamasını buraya girin

Aşama 3:

Projenizin kök klasörüne sağ tıklayın ve yeni bir dosya türü ekleyin Launch Screenve istediğiniz gibi adlandırın.

görüntü açıklamasını buraya girin

4. adım

Sol gezinme bölmesinde projenize tıklayın, Settings> Generalve altına gidin App Icons and Launch Images. Launch Image SourceBoş olduğundan ve Launch Screen Fileadın yeni oluşturulan başlatma ekranınızla aynı adda olduğundan emin olun .

görüntü açıklamasını buraya girin

Adım 5

Oluşturduğunuz yepyeni dosyanıza tıklayın step 2, sürükleyin Image Viewveya sizi memnun edecek şekilde düzenleyin.

görüntü açıklamasını buraya girin

O zaman bu kadar, bitirdiniz. Çözümü temizlemenize bile gerek yok, sadece yeniden oluşturun.


1
@Noitidart Memnun oldum yardımcı olabilirim.
Tren

1
Yaptığım şey LaunchScreen.xib'i bile silmedim, sadece metin düğümlerini sildim, sonra bir resim görünümüne sürükledim, açıkladığınız gibi resmi içe aktardım, ardından UIImageView'da resmi ayarladım :) Bunu yapmanın herhangi bir yolu var mı duyarlı? Tablette olduğu gibi 3x olmalı ve telefonda 2x olmalı? Ayrıca UIImageView'um tüm cihazlarda ortalanmamış. :( Sahip olduğum şeyin ekran görüntüsü - i.imgur.com/o5SMgHN.png
Noitidart

1
@Noitidart Bunlarda iyi bul. Eminim bu yanıta bakan biri için faydalı olacaklardır.
Tren

1
Teşekkürler kardeşim! Bence keşfetmenin yolu bunu yapmanın gerçek yolu. Her bir manzara / portrede her bir aygıtın boyutu olan belirli bir artalan rengine sahip görüntüler oluşturmak, bunu yapmanın yolu değildir (buradaki en çok oylanan yanıt bunu nasıl yapar). Artık arka planın rengini KOLAYCA ayarlayabilirim. Ölçekleme vb. Mükemmel bir şekilde elde edilebilir. Görüntüyle birlikte her şey görüntünün üzerindedir.
Noitidart

1
bu nedenle süreç, hızlı bir yerel uygulama geliştiriyormuşsunuz gibi aynıdır. cool
jasan

9

Güncelleme

generator-rn-toolboxkullanımdan kaldırıldı. Kullanım tepki Yerli-yapmak yerine.

eski cevap

React -native kullanarak başlatma ekranını veya ana simgeyi uygulamak için generator-rn-toolbox'ı öneririm . React-native olarak cli ile kullanımı daha basit ve kolaydır.

  • XCode'u açmanıza gerek yoktur.
  • Çeşitli çözünürlükler için çok fazla görüntü dosyası oluşturmanıza gerek yoktur.
  • Bir satır komutunu kullanarak her zaman başlatma ekranını değiştirin.

Gereksinimler

  • düğüm> = 6
  • Bir başlatma ekranı (açılış ekranı) için boyutu 2208x2208 pikselden fazla olan bir kare görüntü veya psd dosyası
  • Pozitif düşünce ;)

Yüklemek

  1. Jeneratör-rn-toolbox'ı kurun ve
  2. npm install -g yo generator-rn-toolbox
  3. İmagemagick'i yükleyin brew install imagemagick
  4. İOS'ta açılış ekranı uygula

    yo rn-toolbox:assets --splash YOURIMAGE.png --ios

    veya Android

    yo rn-toolbox:assets --splash YOURIMAGE.png --android

Bu kadar. :)

Kaynak


Bunu sormak zorunda olduğuma inanamıyorum ... komutu nereden çalıştırıyorsun?
AlxVallejo

@AlxVallejo En üst proje dizininiz.
Jeff Gu Kang

"✖ sıçrama bulunamadı" Bunun işe yaradığını düşünmüyorum
AlxVallejo

@AlxVallejo Görüntü dosyanız var mıydı? Faydalı kullanıyorum.
Jeff Gu Kang

1
generator-rn-toolboxgerçek, kabul edilen cevabın yaptığı her şeyi yapar.
Felix

6

Sadece bunun üzerinden geçti ve bir muamele yaptı. Keşfettiğim tek yol engeli simülatör içeriğini temizlemiyordu. Yeni başlatma ekranınızın çalışmadığını fark ederseniz simülasyonu açmanız ve aşağıdakilere gitmeniz gerekir:

Simülatör> İçeriği ve ayarları sıfırla

Bu simülatörde bazı sert önbelleğe alma işlemi devam ediyor olmalı, ancak bir kez yapıldığında - yeniden çalıştır ve uygulamayı göreceksin. Bunu hem xcode simülatörleri hem de react-native simülatörleri için yaptığınızdan emin olun!


5

'Ekran Dosyasını Başlat' seçiminin boş olduğundan emin olun: görüntü açıklamasını buraya girin


1

Bu bağlantıyı takip et:

React Native uygulamama bir açılış ekranı eklemek istiyorsanız, süreci takip edin, sonuç sizin olacak.

ADIM: 1 İlk olarak, bir splashImageResource klasörü oluşturdum ve açılış görüntüsü ile launchScreen.xib dosyasını ekledim.

ADIM: 2 kodu alt görünüm etiketinin içinde yazıldığı gibi değiştirin. bu kod ile<subviews> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" image="splash.png" translatesAutoresizingMaskIntoConstraints="NO" id="ZkI-RL-69Z"> </imageView> </subviews>

ADIM: 3 Uygulamanızı Xcode'da açmalısınız. İşte izlenecek adımlar:

a) Proje klasörünüze gidin

b) ios klasörünü açın

c) Uzantısı .xcodeproj olan dosyaya gidin, benim durumumda bu splasScreenTutorial.xcodeproj

d) Bu dosyayı Xcode'unuzda açın.

e) launchScreen.xib dosyasını silin.

f) splashScreenTutorial klasörüne tıklayın, ardından HEDEFLER bölümüne gidin

g) Xcode'unuzun sol üst köşesindeki Genel Sekmeye tıklayın ve Uygulama Simgeleri ve Başlatma Görüntüleri seçeneğine gidin.

h) Görüntü Kaynağını Başlat'a gidin ve Varlık Kataloğunu Kullan'ı tıklayın. Taşı tıklayın.

i) LaunchScreen metnini Başlatma Ekranı Dosyasından kaldırın.

j) Proje klasörünüze geri dönün ve Images.xcassets dosyasını açın. AppIcon ve LaunchImage'ı görmelisiniz.

k) Ardından, LaunchImage'a tıklayın, Son olarak, farklı boyutlarda sahip olduğunuz açılış ekranı görüntülerini Başlatma Görüntüsü kutusuna sürükleyin.

Görüntüleri böyle sürükleyin.

Açılış Ekranını Test Et a) Değişiklikleri görmek için, uygulamayı başlangıçta çalıştırdıysanız simülatörünüzden silmeniz gerekir.

b) Uygulamayı silmek için Simülatör çubuğunuzdaki Donanım menüsüne tıklayın ve Ana Sayfaya gidin.

c) Silmek istediğiniz belirli uygulama simgesine dokunup basılı tutun ve simge üzerindeki X işaretine tıklayın.

d) React-native run-ios kullanarak uygulamanızı tekrar çalıştırın

Açılış Ekranınızı görebilirsiniz


1

Benim için XCode 10.1ve react-native 59.2ben ek adımlar zorunda sonra zaten görüntüler, film şeridi ve 1 evrensel resmi eklemek.

  • Resme sağ tıklayın, tıklayın Show in Finderve ardından Contents.jsondosyanızı düzenleyin
  • Görüntüyü 2x ve 3x bölümlerine ekleyin
  • "Cetvel" menüsüyle Başlatma Ekranı film şeridine gidin
  • Dışarıdaki kırmızı okların değil, yalnızca içerideki kırmızı okların açık olduğundan emin olun
  • "Güvenli Alan Göreli Kenar Boşlukları" nı tıklayın

görüntü açıklamasını buraya girin

Görüntü artık tüm boyuttaki iPhone'larda ortalanmış olmalıdır (Dikey olarak test edilmiştir).



0

React'in yardımıyla bir Başlatma ekranı oluşturursanız, aynı şeyi iOS Xcode'daki LaunchScreen.xib dosyasına eklemelisiniz, çünkü bunun için bir Ekran Görüntüsü alıp Images.xcassets'e Görüntü olarak ekleyebilirsiniz.

LaunchScreen'i açın ve ardından UIImageView öğesini Xcode'da Sağ Panelden Nesne Kitaplığından Görüntüle'ye ekleyin.

görüntü açıklamasını buraya girin

Görünüme Sondaki, Önde Gelen, Alt ve Üst Kısıtlamalar Ekleyin. Aşağıda gösterildiği gibi -

görüntü açıklamasını buraya girin

UIImageView ContentMode'u AspectFit olarak değiştirmeyi unutmayın, böylece uygulama çalıştığında aynı görünecektir.

Bundan sonra, beyaz bir ekran elde etmemek için AppDelegate'e kod eklemeniz gerekir. Kod -

 UIView* launchScreenView = [[[NSBundle mainBundle] loadNibNamed:@"LaunchScreen" owner:self options:nil] objectAtIndex:0];
 launchScreenView.frame = self.window.bounds;
 rootView.loadingView = launchScreenView;

Başvurabilirsiniz - https://facebook.github.io/react-native/docs/running-on-device.html#pro-tip


0

Sadece hala sorun yaşayanlar için, iOS Başlatma ekranını çalıştırmadan önce kabul edilen cevaptan bir adım daha eksik.

Info.plistProje klasörünü açın ve "Ana uç dosyası taban adı" anahtarını silin. Ardından, yeniden inşa edin ve umarız sorun giderilir.


0

Yukarıdaki çözümleri izledikten sonra uygulamam Açılış Ekranına takılıyordu, bu yüzden ios'a özel açılış ekranını eklemek için aşağıdaki 7 adımı uyguladım.

  1. Xcode'u açın ve LaunchScreen.xibprojenizdeki dosyayı bulun (Bunun varsayılan olarak ios'ta gösterilen ekran olduğuna dikkat edin)
  2. Ekrandaki metni kaldırmak / düzenlemek için üzerine tıklayın ve istediğiniz değişiklikleri yapın.
  3. Arka plan rengini değiştirmek için, sağ taraftaki çubukta bulunan aşağıdaki simgeleri bulun ve soldan dördüncü, en üstteki küçük simge düğmesini tıklayın (fareyle üzerine geldiğinizde "Nitelik Denetçisini Göster" yazar)

görüntü açıklamasını buraya girin

  1. Artık arka plan rengini nasıl değiştireceğinizi bildiğinize göre, aşağıdaki düğmeyi tıklayarak Açılış ekranına görüntü ekleyelim ve listeden Görüntü görünümünü seçip, açılış ekranında istediğiniz yere sürükleyip yerleştirelim.

görüntü açıklamasını buraya girin

  1. Şimdi görüntüyü 'ye eklemeliyiz, Images.xcassetsböylece bunu LaunchScreen.xibyapmak için ona referans verebiliriz Images.xcassets. +düğmesine tıklayın importve ardından giriş ekranında göstermek istediğiniz görüntüyü ekleyin. Altta AppIconresim dosyanızın adını göreceksiniz. Bu, referans olarak kullanacağımız addır.LaunchScreen.xib

  2. Şimdi LaunchScreen.xibdosyaya eklediğimiz resme referans vermeliyiz LaunchScreen.xib, image viewbu yüzden daha önce eklediğimiz resme geri dönün ve tıklayın ve sağ köşede bir sürü seçenek göreceksiniz. image5. adımda içe aktardığınız görüntüyü yazan ilkini tıklayın ve seçin

görüntü açıklamasını buraya girin

  1. projeyi temizleyin ve çalıştırın react-native run-iosve değişiklikleri görmelisiniz.

-5

Başlatma ekranı görüntü kaynağını görüntü ayarınız olarak ayarlamalısınız. Daha sonra LauncScreen.xib dosyasını silin. Daha sonra projenizde genel bir arama yapın ve LaunchScreen.xib'e yapılan tüm referansları kaldırın (tüm projenize bakın. Sublime metin editörü kullanıyorum, bu nedenle cmd + shift + f) ve çalışmalıdır.


Cevabınız için teşekkürler. İyi anlamıyorum çünkü bir yazım hatası yaptığını düşünüyorum. LaunchScreen.xib'e referansları kaldırmak için projemde genel bir arama yaptım, pero dosyaya referans yok: puu.sh/lGu7z/8fd88a886e.png Teşekkürler.
JV Lobo
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.