Harap dicatat bahwa pertanyaan ini dari tahun 2008 dan sekarang hanya memiliki kepentingan sejarah.
Apa cara terbaik untuk membuat aplikasi iPhone yang berjalan dalam mode lanskap sejak awal, terlepas dari posisi perangkatnya?
Baik secara terprogram dan menggunakan Interface Builder.
ios
objective-c
landscape
Michiel de Mare
sumber
sumber
Jawaban:
Jawaban historis saja. Sangat ketinggalan zaman.
Harap dicatat bahwa jawaban ini sekarang sangat ketinggalan zaman /
Jawaban ini hanyalah keingintahuan sejarah .
Berita menarik! Seperti yang ditemukan oleh Andrew di bawah, masalah ini telah diperbaiki oleh Apple di versi 4.0+.
Tampaknya tidak perlu lagi memaksakan ukuran tampilan pada setiap tampilan, dan masalah serius khusus lanskap "baru berfungsi pertama kali" telah diselesaikan.
Pada April 2011, tidak mungkin untuk menguji atau bahkan membangun apa pun di bawah 4.0, jadi pertanyaannya hanyalah keingintahuan bersejarah. Sungguh luar biasa betapa banyak masalah yang ditimbulkannya bagi para pengembang begitu lama!
Berikut adalah pembahasan dan solusi asli. Ini sama sekali tidak relevan sekarang, karena sistem ini bahkan tidak dapat dioperasikan.
SANGAT SULIT untuk membuat ini berfungsi sepenuhnya - setidaknya ada tiga masalah / bug yang sedang dimainkan.
coba ini .. desain lansekap pembangun antarmuka
Perhatikan khususnya di mana dikatakan "dan Anda perlu menggunakan shouldAutorotateToInterfaceOrientation dengan benar di mana pun" artinya di mana saja, semua tampilan layar penuh Anda.
Semoga membantu dalam mimpi buruk ini!
Sebuah pengingat penting dari masalah TAMBAHAN terkenal yang dihadapi di sini: jika Anda mencoba untuk beralih antara LEBIH DARI SATU tampilan (semua lanskap), INI HANYA TIDAK BEKERJA . Sangat penting untuk mengingat ini atau Anda akan membuang hari untuk masalah tersebut. Secara harfiah TIDAK MUNGKIN. Ini adalah bug terbuka, yang diketahui, terbesar di platform iOS. Secara harfiah tidak ada cara untuk membuat perangkat keras membuat tampilan kedua yang Anda muat, menjadi lanskap. Solusi yang menjengkelkan tetapi sederhana, dan yang harus Anda lakukan, adalah memiliki master UIViewController sepele yang tidak melakukan apa pun selain duduk di sana dan membiarkan Anda bertukar di antara tampilan Anda.
Dengan kata lain, di iOS karena bug utama yang diketahui:
Anda hanya dapat melakukannya sekali . Nanti, jika Anda mencoba untuk menghapus happyThing.view, dan bukannya meletakkan newThing.view di sana, ITU TIDAK BEKERJA - DAN ITU ITU. Mesin tidak akan pernah memutar tampilan menjadi lanskap. Tidak ada perbaikan trik, bahkan Apple tidak dapat membuatnya bekerja. Solusi yang harus Anda adopsi adalah memiliki UIViewController secara keseluruhan yang hanya ada di sana dan hanya menyimpan berbagai tampilan Anda (happyThing, newThing, dll). Semoga membantu!
sumber
Dari Situs Dev Apple:
sumber
Ringkasan dan integrasi dari semua posting, setelah mengujinya sendiri; periksa pembaruan untuk 4.x, 5.x di bawah ini.
Mulai 3.2 Anda tidak dapat mengubah orientasi aplikasi yang sedang berjalan dari kode.
Tetapi Anda dapat memulai aplikasi dengan orientasi tetap, meskipun melakukannya tidak langsung.
Coba dengan resep ini:
UISupportedInterfaceOrientations
dalamInfo.plist
fileshouldAutorotateToInterfaceOrientation:
metode (untuk mengembalikan nilai yang sama yang Anda tentukan di plist, tentu saja)di semua pengontrol tampilan mengatur tampilan latar belakang dengan
self.view.frame = CGRectMake(0, 0, 480, 320)
dalam
viewDidLoad
metode.Pembaruan (iOS 4.x, 5.x) : Panduan Pemrograman Aplikasi Apple iOS memiliki paragraf "Peluncuran dalam Mode Lansekap" di bab "Trik Aplikasi Tingkat Lanjut".
Referensi:
sumber
Pertama saya setel di info.plist
lalu saya meletakkan kode ini di applicationDidFinishLaunching:
Dengan cara ini saya dapat mengerjakan tampilan di Interface Builder dalam mode lanskap.
sumber
Jawaban sasb dan michaelpryor tampaknya benar, tetapi jika tidak berhasil untuk Anda, coba alternatif ini:
Atau yang ini:
Atau yang ini:
Anda mungkin juga harus menelepon
window makeKeyAndVisible;
dulu.Beberapa tautan: Berkembang dalam mode lanskap , SDK iPhone: Bagaimana cara memaksa mode Lansekap saja?
@Robert: lihat The iPhone SDK, NDA, dan Stack Overflow .
sumber
Saya terkejut belum ada yang memberikan jawaban ini:
Dalam semua pengujian saya ketika menutup pengontrol tampilan modal, orientasi pilihan pengontrol tampilan induk yang ditetapkan di
shouldAutorotateToInterfaceOrientation
dihormati bahkan ketika bagian dari UINavigationController. Jadi solusi untuk ini sederhana:Buat UIViewController tiruan dengan UIImageView sebagai latar belakang. Setel gambar ke gambar default.png yang digunakan aplikasi Anda saat memulai.
Ketika
viewWillAppear
dipanggil di pengontrol tampilan root Anda, cukup tunjukkan pengontrol tampilan tiruan tanpa animasi.ketika
viewDidAppear
dipanggil dalam pengontrol tampilan dummy Anda, tutup pengontrol tampilan dengan animasi silang larut yang bagus.Ini tidak hanya berfungsi, tetapi juga terlihat bagus! BTW, hanya untuk klarifikasi saya melakukan pengontrol tampilan root
viewWillAppear
seperti ini:sumber
Panduan Pemrograman iPhone OS terbaru memiliki bagian lengkap tentang ini, dengan kode contoh. Saya yakin ini adalah tambahan baru-baru ini, jadi mungkin Anda melewatkannya. Ini menjelaskan semua kondisi yang harus Anda patuhi; pada dasarnya ...
Cari "Launching in Landscape Mode", halaman 102.
sumber
Lihat jawaban ini: Mode Lansekap HANYA untuk iPhone atau iPad
Meskipun jika Anda menggunakan mode campuran, Anda mungkin lebih baik menggunakan
sumber