Layar iPhone 5 baru memiliki rasio aspek baru dan resolusi baru (640 x 1136 piksel).
Apa yang diperlukan untuk mengembangkan aplikasi baru atau transisi yang sudah ada ke ukuran layar baru?
Apa yang harus kita ingat untuk membuat aplikasi "universal" untuk tampilan lama dan rasio aspek layar lebar baru?
Jika Anda memiliki aplikasi yang dibangun untuk iPhone 4S atau yang lebih lama, itu akan dijalankan dengan huruf letter pada iPhone 5.
Untuk menyesuaikan aplikasi Anda dengan layar baru yang lebih tinggi, hal pertama yang Anda lakukan adalah mengubah gambar peluncuran ke: [email protected]. Ukurannya harus 1136x640 (HxW).Yap, memiliki gambar default dalam ukuran layar baru adalah kunci untuk membiarkan aplikasi Anda mengambil seluruh layar iPhone 5 yang baru .
(Perhatikan bahwa konvensi penamaan hanya berfungsi untuk gambar default. Memberi nama gambar lain "[email protected]" tidak akan membuatnya dimuat di tempat "[email protected]". Jika Anda perlu memuat gambar yang berbeda untuk ukuran layar yang berbeda, Anda harus melakukannya secara terprogram.)
Jika Anda sangat beruntung, itu mungkin saja ... tetapi kemungkinan besar, Anda harus mengambil beberapa langkah lagi.
Dalam kasus ekstrem (ketika tidak satu pun di atas mencukupi), desain dua Xibs dan muat yang sesuai di view controller.
Untuk mendeteksi ukuran layar:
sumber
Satu-satunya hal yang benar-benar diperlukan untuk dilakukan adalah menambahkan gambar peluncuran bernama "[email protected]" ke sumber daya aplikasi, dan secara umum (jika Anda cukup beruntung) aplikasi akan bekerja dengan benar.
Jika aplikasi tidak menangani acara sentuh, maka pastikan bahwa jendela kunci memiliki ukuran yang tepat. Solusinya adalah mengatur frame yang tepat:
Ada masalah lain yang tidak terkait dengan ukuran layar saat bermigrasi ke iOS 6. Baca Catatan Rilis iOS 6.0 untuk detailnya.
sumber
Terkadang (untuk aplikasi pra-storyboard), jika tata letak akan cukup berbeda, ada baiknya menentukan xib yang berbeda sesuai perangkat (lihat pertanyaan ini - Anda harus memodifikasi kode untuk berurusan dengan iPhone 5) di viewController init, karena tidak ada jumlah mengutak-atik masker autoresizing akan bekerja jika Anda membutuhkan grafis yang berbeda.
Ini berguna untuk aplikasi yang menargetkan versi iOS yang lebih lama.
sumber
Di sini Anda dapat menemukan tutorial yang bagus (untuk MonoTouch, tetapi Anda juga dapat menggunakan informasi untuk proyek-proyek Non-MonoTouch):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5 -ios-6-hari ini /
Buat gambar baru untuk layar splash / default Anda ( 640 x 1136 piksel ) dengan nama " [email protected] "
Di Simulator iOS , buka Perangkat Keras -> menu Perangkat, dan pilih " iPhone (Retina 4-inci) "
Buat gambar lain, mis. Gambar latar belakang
sumber
Sangat mudah untuk memigrasikan iPhone5 dan iPhone4 melalui XIB .........
sumber
Saya menyelesaikan masalah ini di sini . Cukup tambahkan ~ 568h @ 2x suffix ke gambar dan ~ 568h ke xib's. Tidak perlu lagi pemeriksaan runtime atau perubahan kode.
sumber
Saya telah menambahkan gambar peluncuran default baru dan (dalam memeriksa beberapa jawaban SE lainnya ...) memastikan storyboard saya semuanya berukuran sendiri dan disubmit tetapi retina 4 inci masih berbentuk letterbox.
Kemudian saya perhatikan bahwa daftar info saya memiliki item baris untuk " Luncurkan gambar " yang diatur ke " Default.png ", yang dengan demikian saya hapus dan kotak surat ajaib tidak lagi muncul. Mudah-mudahan, itu menyelamatkan orang lain kegilaan yang sama seperti yang saya alami.
sumber
Saya kira, ini tidak akan berfungsi dalam semua kasus, tetapi dalam proyek khusus saya itu menghindarkan saya dari duplikasi file NIB:
Di suatu tempat di dalam
common.h
Anda dapat membuat definisi ini berdasarkan ketinggian layar:Di pengontrol dasar Anda:
sumber
Dalam sebuah
constants.h
file Anda dapat menambahkan pernyataan define ini:sumber
Untuk menentukan apakah aplikasi Anda dapat mendukung iPhone 5 Retina gunakan ini: (Ini bisa lebih kuat untuk mengembalikan jenis layar, 4S Retina, dll., Tetapi seperti yang tertulis di bawah ini, itu hanya kembali jika iPhone mendukung iOS5 Retina sebagai Ya atau tidak)
Dalam file ".h" yang umum tambahkan:
Dalam file ".m" yang umum tambahkan:
sumber
Pertama-tama buat dua xibs dan lampirkan semua delegasi, kelas utama ke
xib
dan kemudian Anda dapat memasukkan kondisi yang disebutkan di bawah ini dalamappdelegate.m
file Anda diAnda dapat menggunakannya di mana saja dalam program tergantung pada kebutuhan Anda bahkan di
ViewController
kelas Anda . Yang paling penting adalah Anda membuat duaxib
file terpisahiphone 4(320*480) and iphone 5(320*568)
sumber
Coba metode di bawah ini dalam kelas tunggal:
sumber
Anda dapat menggunakan
Auto Layout
fitur dan membuat desain menggunakan resolusi layar iPhone 5 dan itu akan bekerja untuk perangkat 4 "dan 3,5", tetapi dalam hal ini Anda harus memiliki pengetahuan yang cukup tentang tata letak manajer.sumber
Memeriksa
bounds
dengan568
akan gagal dalam modus lansekap. iPhone 5 diluncurkan hanya dalam mode potret tetapi jika Anda ingin mendukung rotasi maka iPhone 5 "check" perlu menangani skenario ini juga.Inilah makro yang menangani status orientasi:
Penggunaan panggilan 'preferMode' berasal dari posting lain yang saya baca beberapa jam yang lalu jadi saya tidak menemukan ide ini.
sumber
Pertama-tama perlihatkan gambar ini. Dalam gambar itu Anda menunjukkan peringatan untuk dukungan Retina 4 jadi klik peringatan ini dan klik add sehingga layar splash Retina 4 Anda secara otomatis ditambahkan dalam proyek Anda.
dan setelah Anda menggunakan kode ini:
sumber
Saya tidak pernah menghadapi masalah dengan perangkat apa pun karena saya punya satu basis kode untuk semua, tanpa nilai hardcoded. Apa yang saya lakukan adalah memiliki gambar berukuran maksimum sebagai sumber daya alih-alih satu untuk setiap perangkat. Sebagai contoh, saya akan memiliki satu untuk tampilan retina dan menunjukkannya sebagai aspek fit sehingga akan dilihat seperti pada setiap perangkat. Datang untuk memutuskan kerangka tombol, misalnya, pada saat run time. Untuk ini saya menggunakan nilai% dari tampilan paten, misalnya, jika saya ingin lebar menjadi setengah dari tampilan induk ambil 50% dari induk dan berlaku sama untuk tinggi dan tengah.
Dengan ini saya bahkan tidak perlu xibs.
sumber
Anda dapat menggunakan definisi ini untuk menghitung jika Anda menggunakan iPhone 5 berdasarkan ukuran layar:
lalu gunakan
if
pernyataan sederhana :sumber
Peter, Anda harus benar-benar melihat Canappi, itu melakukan semua itu untuk Anda, yang harus Anda lakukan adalah menentukan tata letak seperti itu:
Dari sana Canappi akan menghasilkan kode objektif-c yang benar yang mendeteksi perangkat yang sedang berjalan dan akan menggunakan:
Canappi berfungsi seperti Interface Builder dan Story Board yang digabungkan, kecuali bahwa itu dalam bentuk teks. Jika Anda sudah memiliki file XIB, Anda dapat mengonversinya sehingga Anda tidak perlu membuat ulang seluruh UI dari awal.
sumber
Anda dapat secara manual memeriksa ukuran layar untuk menentukan perangkat mana yang Anda pakai:
sumber
Anda dapat menambahkan kode ini:
sumber
scale
pemilih padaUIScreen
dan Anda akan memiliki kasus di mana kode "resolusi standar" Anda tidak eksekutif.Ini adalah kode universal nyata, Anda dapat membuat 3 papan cerita yang berbeda:
Tetapkan mode Universal proyek Anda, dan atur iPhone cerita utama Anda dengan storyboard iPhone5 dan ipad utama dengan storyboard target iPad, sekarang tambahkan target storyboard baru untuk iphone dan modifikasi resolusi untuk iphone 4s atau kurang sekarang implementasikan AppDelegate.m Anda
iPhone4 / 4s (sama untuk 3 / 3Gs) satu untuk iPhone5 dan menjadikan proyek universal , dengan target Storyboard baru untuk iPad, sekarang masuk ke AppDelegate.m di bawah
didFinishLaunching
tambahkan kode ini:Jadi, Anda telah membuat aplikasi Universal untuk iPhone 3 / 3Gs / 4 / 4s / 5 Semua gen iPod, dan Semua jenis iPad
Ingatlah untuk mengintegrasikan semua IMG dengan
myImage.png
dan[email protected]
sumber
Menurut saya cara terbaik untuk mengatasi masalah seperti itu dan menghindari beberapa kondisi yang diperlukan untuk memeriksa ketinggian perangkat, adalah menggunakan kerangka relatif untuk tampilan atau elemen UI apa pun yang Anda tambahkan ke tampilan Anda misalnya: jika Anda menambahkan beberapa elemen UI yang Anda inginkan harus di bagian bawah tampilan atau tepat di atas bilah tab maka Anda harus mengambil asal y sehubungan dengan tinggi tampilan Anda atau sehubungan dengan bilah tab (jika ada) dan kami memiliki properti pengubahan ukuran otomatis juga. Saya harap ini akan berhasil untuk Anda
sumber
Daripada menggunakan serangkaian persyaratan, Anda dapat mengubah ukuran tampilan secara otomatis menggunakan ukuran layar.
Dalam kasus saya, saya ingin tampilan yang mengisi ruang antara beberapa bidang input di bagian atas dan beberapa tombol di bagian bawah, jadi perbaiki sudut kiri atas dan variabel kanan bawah berdasarkan ukuran layar. Aplikasi saya mengisi tampilan gambar dengan foto yang diambil oleh kamera sehingga saya ingin semua ruang yang saya dapatkan.
sumber
Jika Anda perlu mengonversi aplikasi yang sudah ada menjadi universal, Anda harus memilih file xib yang sesuai-> tampilkan Utilities-> Tampilkan Ukuran inspektur.
Di inspektur Ukuran Anda dapat melihat Autosizing, dengan menggunakan alat ini Anda dapat mengonversi ke Aplikasi iOS yang ada.
sumber
Menggunakan xCode 5, pilih "Migrasi ke Katalog Aset" di Project> General.
Kemudian gunakan "Show in finder" untuk menemukan gambar peluncuran Anda, Anda dapat mengedit-dummy menjadi 640x1136, lalu seret ke dalam katalog aset seperti yang ditunjukkan pada gambar di bawah.
Pastikan bagian iOS7 dan iOS6 R4 memiliki gambar 640x1136. Lain kali Anda meluncurkan aplikasi, bilah hitam akan menghilang, dan aplikasi Anda akan menggunakan layar 4 inci
sumber
Pemberitahuan bernilai poin - dalam Xcode baru Anda harus menambahkan file gambar ini [email protected] ke aset
sumber
Menggunakan
Auto Layout
fitur ini untuk dilihat. Ini akan menyesuaikan secara otomatis ke semua resolusi.Buat dua xibs untuk controller yang memiliki nama controller dengan akhiran ~ iphone atau ~ ipad. Pada waktu kompilasi, Xcode akan mengambil xib kanan berdasarkan perangkat.
Gunakan kelas ukuran, jika Anda ingin membuat xib tunggal untuk iPhone dan iPad, jika tampilan cukup sederhana untuk port ke iPhone dan iPad.
sumber
Ada sedikit masalah saat menguji pada perangkat iOS dan iOS Simulator. Tampaknya simulator (XCode 6.0.1) memberikan nilai yang diubah untuk lebar dan tinggi
[[UIScreen mainScreen] bounds].size
tergantung pada orientasi perangkat.Jadi ini mungkin menjadi masalah ketika menentukan ukuran layar fisik yang tepat. Kode ini juga membantu membedakan semua 2014. Generasi model iPhone:
Itu juga dapat dengan mudah diubah untuk membuat perbedaan antara misalnya iPhone6 dari iPhone6 +.
sumber
Saya akan menyarankan untuk menggunakan Autoresizing Mask di aplikasi Anda sesuai dengan antarmuka UI Anda, ini menghemat banyak masalah dan lebih baik daripada membuat UI yang berbeda untuk layar iPhone 4 dan 5.
sumber