Saya hanya ingin mendukung tampilan potret. Bagaimana cara membuat aplikasi React Native tidak melakukan rotasi otomatis? Saya mencoba mencari dokumentasi dan masalah Github, tetapi saya tidak menemukan apa pun yang membantu.
ios
react-native
syg
sumber
sumber
sensorPortrait
bekerja dengan baik. Itu tidak akan pernah mendukung Potret terbalik (yaitureversePortrait
). Namun, menggunakanfullSensor
berhasil tetapi memiliki peringatan juga memungkinkan lanskap. Itu akhirnya baik-baik saja bagi saya tetapi jika Anda hanya menginginkanportrait
danreversePortrait
, Anda dapat menghalangi perubahan orientasi dalam Aktivitas Anda denganonConfigurationChanged
dannewConfig.orientation
dan mengabaikan atau menimpa perubahan lanskap.Jawaban:
Aplikasi React Native adalah aplikasi iOS biasa, jadi Anda dapat melakukannya dengan cara yang persis sama seperti yang Anda lakukan untuk semua aplikasi lain. Cukup hapus centang (di XCode) "Lanskap Kiri" dan "Lanskap Kanan" sebagaimana diizinkan Orientasi Perangkat di properti aplikasi Umum:
sumber
portrait
danupside down
, tetapi aplikasi saya tidak berputar otomatis ketika saya memutar layar simulator (90 derajat dua kali), apa masalahnya?react-native 0.45.1
Untuk iOS, jawaban Jarek bagus.
Untuk Android, Anda perlu mengedit file AndroidManifest.xml. Tambahkan baris berikut ke setiap aktivitas yang ingin Anda kunci ke mode potret:
Jadi, contoh lengkapnya mungkin terlihat seperti ini:
Lihat daftar lengkap properti screenOrientation yang tersedia di dokumen, di sini: https://developer.android.com/guide/topics/manifest/activity-element.html
sumber
Pembaruan 2017:
{"orientation": "portrait"}
Saat ini banyak panduan resmi React Native seperti ini yang merekomendasikan penggunaan Expo saat membuat aplikasi React Native jadi selain jawaban yang ada, saya juga akan menambahkan solusi khusus Expo yang perlu diperhatikan karena berfungsi untuk iOS dan Android dan Anda hanya perlu setel sekali tanpa perlu mengacaukan konfigurasi XCode, AndroidManifest.xml, dll.
Mengatur orientasi pada waktu pembuatan:
Jika Anda membuat aplikasi React Native dengan Expo, Anda dapat menggunakan kolom
orientation
diapp.json
file Anda - misalnya:Dapat disetel ke
"portrait"
,"landscape"
atau"default"
yang artinya rotasi otomatis tanpa kunci orientasi.Mengatur orientasi saat runtime:
Anda juga dapat mengganti pengaturan itu pada waktu proses dengan menjalankan, misalnya:
dimana argumennya bisa:
ALL
- Semua 4 kemungkinan orientasiALL_BUT_UPSIDE_DOWN
- Semua kecuali potret terbalik, bisa jadi semua 4 orientasi pada perangkat Android tertentu.PORTRAIT
- Orientasi potret, bisa juga potret terbalik pada perangkat Android tertentu.PORTRAIT_UP
- Potret terbalik saja.PORTRAIT_DOWN
- Hanya potret terbalik.LANDSCAPE
- Semua orientasi lanskap.LANDSCAPE_LEFT
- Hanya lanskap kiri.LANDSCAPE_RIGHT
- Pemandangan yang tepat saja.Mendeteksi rotasi:
Jika Anda mengizinkan lebih dari satu orientasi, Anda dapat mendeteksi perubahan dengan mendengarkan
change
kejadian padaDimensions
objek:atau Anda juga bisa mendapatkan dimensi kapan saja dengan
Dimensions.get('window')
danDimensions.get('screen')
seperti ini:atau:
Ketika Anda mendengarkan acara, Anda mendapatkan keduanya
window
danscreen
pada saat yang sama sehingga Anda mengaksesnya secara berbeda.Dokumentasi:
Untuk info lebih lanjut lihat:
sumber
Answer for disable rotation in React Native.
For Android :
Buka file Androidmenifest.xml dan tambahkan satu baris: android: screenOrientation = "portrait"
For IOS :
Sederhana, Anda harus memeriksa atau menghapus centang mode rotasi dari XCODE Anda
sumber
Jika Anda menggunakan Expo, Anda dapat melakukannya hanya dengan kode ini:
Taruh di App.js sebelum render
Semua opsi:
ALL
ALL_BUT_UPSIDE_DOWN
PORTRAIT
PORTRAIT_UP
PORTRAIT_DOWN
LANDSCAPE
LANDSCAPE_LEFT
LANDSCAPE_RIGHT
sumber
Untuk Android, Anda perlu mengedit file AndroidManifest.xml. Tambahkan baris berikut ke setiap aktivitas yang ingin Anda kunci ke mode potret:
android: screenOrientation = "portrait"
Jadi, contoh lengkapnya mungkin terlihat seperti ini:
sumber
Untuk Android: Dalam file manifes Anda, letakkan:
Kemudian di dalam tag aplikasi, letakkan:
Dan kemudian di semua set aktivitas:
sumber
gunakan ini untuk masalah orientasi ios ipad ingin mengubah file plist https://www.reddit.com/r/reactnative/comments/7vkrfp/disabling_screen_rotate_in_react_native_both/
IOS:
sumber
Anda dapat menggunakan modul dan fungsi react-native-orientasi-locker
lockToPortrait()
.Ini dapat membantu jika Anda juga ingin memiliki beberapa layar dengan orientasi tidak terkunci - dalam hal ini Anda juga dapat menggunakan
unlockAllOrientations()
fungsi.sumber
Jika Anda menggunakan proyek RN expo, dan aplikasi berisi navigasi-reaksi, maka pengaturan navigasi ke kode berikut membantu saya.
sumber