Cara mendapatkan layar lebar dan tinggi di iOS?
Bagaimana seseorang bisa mendapatkan dimensi layar di iOS?
Saat ini, saya menggunakan:
lCurrentWidth = self.view.frame.size.width;
lCurrentHeight = self.view.frame.size.height;
di viewWillAppear:
dan willAnimateRotationToInterfaceOrientation:durasi:
Pertama kali saya mendapatkan seluruh ukuran layar. Kedua kalinya saya mendapatkan layar minus nav bar.
497
16
Masalah dengan kode yang anda diposting adalah bahwa anda're mengandalkan lihat ukuran untuk mencocokkan bahwa layar, dan seperti yang anda've terlihat bahwa's tidak selalu terjadi. Jika anda membutuhkan ukuran layar, anda harus melihat pada objek yang merupakan layar itu sendiri, seperti ini:
Update untuk split view: Di komentar, Dmitry bertanya:
Kode yang diberikan atas laporan ukuran layar, bahkan dalam modus layar split. Ketika anda menggunakan modus layar split, aplikasi's jendela perubahan. Jika kode di atas tidak't memberikan anda informasi yang anda harapkan, maka suka OP, anda're melihat objek yang salah. Dalam hal ini, meskipun, anda harus melihat pada jendela bukan layar seperti ini:
Swift 4.2
Hati-hati, [UIScreen mainScreen] berisi status bar juga, jika anda ingin mengambil bingkai untuk aplikasi anda (termasuk status bar), anda harus menggunakan
I've diterjemahkan beberapa hal di atas Objective-C jawaban ke kode Swift. Setiap terjemahan melanjutkan dengan mengacu pada jawaban asli.
Utama
Fungsi sederhana Jawaban
Perangkat Orientasi Jawaban
Log Jawaban
Saya telah menggunakan ini selama metode sebelumnya:
Saya menyadari bahwa ini adalah sebuah posting lama, tapi kadang-kadang saya menemukan itu berguna untuk #mendefinisikan konstanta seperti ini jadi saya tidak perlu khawatir tentang hal itu:
Di atas konstan harus kembali ukuran yang benar tidak peduli orientasi perangkat. Kemudian mendapatkan dimensi adalah yang sederhana seperti:
It's sangat, sangat mudah untuk mendapatkan ukuran perangkat as baik as memperhitungkan orientasi:
Kita harus mempertimbangkan orientasi perangkat juga:
Di sini saya telah diperbarui untuk swift 3
applicationFrame usang dari iOS 9
Di swift tiga mereka telah dihapus () dan mereka telah mengubah beberapa konvensi penamaan, anda bisa lihat di sini Link
Membuat penggunaan ini
Struct
untuk mengetahui info berguna tentang perangkat saat ini di Swift 3.0Jika anda ingin layar lebar/tinggi terlepas dari orientasi perangkat (baik untuk ukuran hanya portrait view controller yang diluncurkan dari orientasi landscape):
Berikut ini adalah cara Cepat untuk mendapatkan ukuran layar:
Ini adalah termasuk sebagai fungsi standar dalam:
https://github.com/goktugyil/EZSwiftExtensions
Modern menjawab:
jika aplikasi anda mendukung tampilan split di iPad, masalah ini menjadi sedikit rumit. Yang anda butuhkan jendela's ukuran, tidak layar's, yang mungkin berisi 2 aplikasi. Jendela's ukuran juga bervariasi sementara berjalan.
Gunakan aplikasi's jendela utama's ukuran:
Catatan: metode di atas dapat mendapatkan salah nilai sebelum jendela menjadi kunci jendela ketika memulai. jika anda hanya membutuhkan lebar, metode di bawah ini sangat fitur:
Solusi tua menggunakan
UIScreen.utama.batas
akan kembali perangkat's batas. Jika anda menjalankan aplikasi dalam mode tampilan split, itu salah dimensi.diri.lihat.jendela
dalam terpanas jawabannya mungkin mendapatkan ukuran yang salah ketika aplikasi berisi 2 atau lebih jendela dan jendela memiliki ukuran kecil.CGFloat width = [[UIScreen mainScreen] batas].ukuran.lebar; CGFloat height = [[UIScreen mainScreen]batas ].ukuran.tinggi;
swift 3.0
untuk lebar
untuk tinggi
Anda dapat menempatkan macro ini anda pch file dan digunakan di mana saja dalam proyek dengan menggunakan "SCREEN_WIDTH"
dan "SCREEN_HEIGHT"
Contoh penggunaan: