Saya menggunakan Katalog Aset Xcode 5, dan saya ingin menggunakan my LaunchImage
sebagai gambar latar belakang tampilan rumah saya (praktik yang cukup umum untuk membuat transisi dari 'memuat' ke 'dimuat' terlihat mulus).
Saya ingin menggunakan entri yang sama di Katalog Aset untuk menghemat ruang dan tidak perlu mereplikasi gambar dalam dua Kumpulan Gambar yang berbeda.
Namun, menelepon:
UIImage *image = [UIImage imageNamed:@"LaunchImage"]; //returns nil
sumber
UIInterfaceOrientationIsLandscape()
sebagai gantinya.LaunchImages itu spesial, dan sebenarnya bukan katalog aset di perangkat. Jika Anda melihat menggunakan iFunBox / iExplorer / etc (atau pada simulator, atau dalam direktori build) Anda dapat melihat nama akhir, dan kemudian menulis kode untuk menggunakannya - mis. untuk proyek khusus iPhone khusus iOS7, ini akan menetapkan gambar peluncuran yang tepat:
Saya memasukkan ini ke viewDidLoad.
Ini tidak terlalu ideal, alangkah baiknya jika Apple memberi kami API yang bagus untuk melakukan ini.
sumber
Aplikasi saya saat ini hanya mendukung iOS 7 dan yang lebih baru.
Beginilah cara saya mereferensikan gambar peluncuran dari katalog aset:
Anda dapat menambahkan lebih banyak pasangan nilai kunci jika Anda ingin mendukung versi iOS yang lebih lama.
sumber
UIScreen.mainScreen.bounds
berbeda tergantung pada orientasi antarmuka saat ini. Lihat stackoverflow.com/a/24153540/158525Berikut kategori di UIImage berdasarkan solusi yang diberikan oleh Cherpak Evgeny di atas.
UIImage + SplashImage.h :
UIImage + SplashImage.m :
sumber
Jawaban @ codeman diperbarui untuk Swift 1.2:
Untuk menyebutnya, dan untuk mendukung rotasi untuk iOS 8:
Hanya yang saya butuhkan, terima kasih!
sumber
Saya baru saja menulis metode umum untuk mendapatkan nama gambar splash untuk iPhone dan iPad (Lansekap, Potret), Ini berhasil untuk saya, Semoga Ini membantu Anda juga. Saya menulis ini dengan bantuan jawaban SO lainnya, terima kasih @Pichirichi untuk seluruh daftar.
Metode utilitas lainnya adalah
sumber
[screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace]
tapi buat pastikan untuk menguji apakah Anda menggunakan iOS 8 terlebih dahulu jika tidak maka akan macet.Versi cepat dari jawaban Cherpak Evgeny:
sumber
Mengikuti jawaban @ Pichirich, saya mereferensikan gambar peluncuran saya di InterfaceBuilder sebagai:
"LaunchImage.png"
... dan dengan Xcode 5.0.2, itu secara otomatis mengambil gambar yang sesuai langsung dari Katalog Aset.
Inilah yang saya harapkan - kecuali tindakan Apple yang sangat jahat dengan mengganti nama "Default.png" menjadi "LaunchImage.png" :)
sumber
nil
diberikan inisialisasiDalam dokumentasinya disebutkan dengan jelas:
"Setiap set dalam katalog aset memiliki nama . Anda dapat menggunakan nama itu untuk secara terprogram memuat setiap gambar yang ada dalam set. Untuk memuat gambar, panggil UIImage: ImageNamed: meneruskan nama set yang berisi gambar tersebut . "
Menggunakan daftar Pichirichi membantu mengatasi ketidakkonsistenan ini.
sumber
UIImageView *myView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LaunchImage"]];
Bagus sekali![UIImage imageNamed:..]
tahu mana yang harus dipilih?Seseorang dapat dengan mudah mengakses gambar Peluncuran dengan satu baris kode.
Ikuti langkah-langkah yang diberikan di bawah ini untuk mencapai fungsionalitas yang digambarkan di atas.
Langkah 1. Perluas
UIImage
kelas dengan membuat kategori & tambahkan metode berikut ke dalamnya.Langkah 2. Metode di atas harus bekerja dengan menambahkan kode berikut juga ke dalam kategori yang sama
UIImage
sumber
Saya menyadari bahwa ini belum tentu solusi terbaik untuk semua orang, tetapi cara termudah (dan paling tidak rawan kesalahan, IMHO) untuk melakukannya adalah dengan membuat entri terpisah di katalog Images.xcassets Anda. Saya menyebutnya
SplashImage
.Saat Anda menambahkan entri baru, pastikan untuk tidak memilih "Gambar Peluncuran Baru" sebagai opsi. Sebaliknya, pilih generik "New Image Set". Selanjutnya, buka inspektur dan pilih opsi yang relevan. Jika Anda membuat hanya untuk perangkat retina, seperti saya sebelumnya, Anda dapat memilih berikut ini:
Ini akan memberi Anda empat entri (iPhone 4S, iPhone 5 (s, c), iPhone 6, dan iPhone 6 Plus).
File yang sesuai dengan gambar adalah sebagai berikut:
Tentu saja, setelah Anda melakukan ini, Anda dapat langsung menggunakannya
[UIImage imageNamed:@"SplashImage"]
sumber
Dengan bantuan jawaban Pichirichi, saya telah menerapkan kategori berikut (iOS 7+): UIImage + AssetLaunchImage
Ini sebenarnya sedikit lebih dari sekadar menghasilkan nama dengan cepat, tetapi mungkin akan membantu.
sumber
Diperbarui ke sintaks Swift terbaru (Swift 5)
sumber