อัปเดต 2017: {"orientation": "portrait"}
ปัจจุบันคำแนะนำ React Native อย่างเป็นทางการจำนวนมากเช่นนี้แนะนำให้ใช้ Expo เมื่อสร้างแอป React Native ดังนั้นนอกเหนือจากคำตอบที่มีอยู่แล้วฉันยังจะเพิ่มโซลูชันเฉพาะงาน Expo ซึ่งเป็นที่น่าสังเกตเพราะใช้ได้กับทั้ง iOS และ Android และคุณจะต้องทำเท่านั้น ตั้งค่าได้ครั้งเดียวโดยไม่ต้องวุ่นวายกับ XCode config, AndroidManifest.xml เป็นต้น
การตั้งค่าการวางแนวในเวลาสร้าง:
หากคุณกำลังสร้างแอป React Native ด้วย Expo คุณสามารถใช้orientationฟิลด์ในapp.jsonไฟล์ของคุณได้ตัวอย่างเช่น:
{
  "expo": {
    "name": "My app",
    "slug": "my-app",
    "sdkVersion": "21.0.0",
    "privacy": "public",
    "orientation": "portrait"
  }
}
มันสามารถตั้งค่าให้"portrait", "landscape"หรือ"default"ซึ่งหมายถึงการที่มีการล็อค autorotate ปฐมนิเทศไม่มี
การตั้งค่าการวางแนวที่รันไทม์:
คุณยังสามารถแทนที่การตั้งค่านั้นในรันไทม์ได้ด้วยการรันตัวอย่างเช่น:
Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
โดยที่อาร์กิวเมนต์สามารถ:
- ALL- ทั้ง 4 ทิศทางที่เป็นไปได้
- ALL_BUT_UPSIDE_DOWN- ทั้งหมดยกเว้นแนวตั้งย้อนกลับอาจเป็นได้ทั้ง 4 ทิศทางบนอุปกรณ์ Android บางรุ่น
- PORTRAIT- การวางแนวตั้งอาจเป็นภาพย้อนกลับบนอุปกรณ์ Android บางรุ่น
- PORTRAIT_UP- ภาพกลับหัวเท่านั้น
- PORTRAIT_DOWN- คว่ำภาพเท่านั้น
- LANDSCAPE- แนวนอนใด ๆ
- LANDSCAPE_LEFT- แนวนอนด้านซ้ายเท่านั้น
- LANDSCAPE_RIGHT- แนวนอนด้านขวาเท่านั้น
ตรวจจับการหมุน:
เมื่อคุณอนุญาตให้มีการวางแนวมากกว่าหนึ่งแนวคุณสามารถตรวจจับการเปลี่ยนแปลงโดยฟังchangeเหตุการณ์บนDimensionsวัตถุ:
Dimensions.addEventListener('change', (dimensions) => {
  // you get:
  //  dimensions.window.width
  //  dimensions.window.height
  //  dimensions.screen.width
  //  dimensions.screen.height
});
หรือคุณยังสามารถเพียงแค่ได้รับมิติทุกเวลาด้วยDimensions.get('window')และDimensions.get('screen')เช่นนี้
const dim = Dimensions.get('window');
// you get:
//  dim.width
//  dim.height
หรือ:
const dim = Dimensions.get('screen');
// you get:
//  dim.width
//  dim.height
เมื่อคุณฟังเหตุการณ์คุณจะได้รับทั้งสองอย่างwindowและscreenในเวลาเดียวกันนั่นคือสาเหตุที่คุณเข้าถึงเหตุการณ์นั้นแตกต่างกัน
เอกสารประกอบ:
ดูข้อมูลเพิ่มเติมได้ที่: