Cập nhật năm 2017: {"orientation": "portrait"}
Hiện tại, nhiều hướng dẫn chính thức về React Native như hướng dẫn này khuyên bạn nên sử dụng Expo khi xây dựng ứng dụng React Native, vì vậy ngoài các câu trả lời hiện có, tôi cũng sẽ thêm một giải pháp dành riêng cho Expo đáng chú ý vì nó hoạt động cho cả iOS và Android và bạn chỉ cần đặt nó một lần mà không cần phải gây rối với cấu hình XCode, AndroidManifest.xml, v.v.
Đặt định hướng tại thời điểm xây dựng:
Nếu bạn đang xây dựng ứng dụng React Native bằng Expo thì bạn có thể sử dụng orientation
trường trong app.json
tệp của mình - ví dụ:
{
"expo": {
"name": "My app",
"slug": "my-app",
"sdkVersion": "21.0.0",
"privacy": "public",
"orientation": "portrait"
}
}
Nó có thể được đặt thành "portrait"
, "landscape"
hoặc "default"
có nghĩa là tự động xoay mà không có khóa định hướng.
Đặt định hướng trong thời gian chạy:
Bạn cũng có thể ghi đè cài đặt đó trong thời gian chạy bằng cách chạy, ví dụ:
Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
nơi đối số có thể là:
ALL
- Tất cả 4 hướng có thể
ALL_BUT_UPSIDE_DOWN
- Tất cả trừ dọc ngược, có thể là cả 4 hướng trên các thiết bị Android nhất định.
PORTRAIT
- Hướng dọc, cũng có thể là dọc ngược trên một số thiết bị Android.
PORTRAIT_UP
- Chỉ ảnh chân dung ngược.
PORTRAIT_DOWN
- Chỉ ảnh chân dung lộn ngược.
LANDSCAPE
- Bất kỳ hướng cảnh quan nào.
LANDSCAPE_LEFT
- Chỉ còn lại phong cảnh.
LANDSCAPE_RIGHT
- Đúng cảnh quan.
Phát hiện vòng quay:
Khi bạn cho phép nhiều hơn một hướng thì bạn có thể phát hiện các thay đổi bằng cách lắng nghe các change
sự kiện trên Dimensions
đối tượng:
Dimensions.addEventListener('change', (dimensions) => {
// you get:
// dimensions.window.width
// dimensions.window.height
// dimensions.screen.width
// dimensions.screen.height
});
hoặc bạn cũng có thể chỉ nhận các thứ nguyên bất cứ lúc nào với Dimensions.get('window')
và Dimensions.get('screen')
như thế này:
const dim = Dimensions.get('window');
// you get:
// dim.width
// dim.height
hoặc là:
const dim = Dimensions.get('screen');
// you get:
// dim.width
// dim.height
Khi bạn lắng nghe sự kiện, bạn nhận được cả hai window
và screen
cùng một lúc, đó là lý do tại sao bạn truy cập nó theo cách khác.
Tài liệu:
Để biết thêm thông tin, hãy xem: