Aktualizacja 2017: {"orientation": "portrait"}
Obecnie wiele oficjalnych przewodników po React Native, takich jak ten, zaleca używanie Expo podczas tworzenia aplikacji React Native, więc oprócz istniejących odpowiedzi dodam również rozwiązanie specyficzne dla Expo, które jest warte odnotowania, ponieważ działa zarówno na iOS, jak i Android i wystarczy ustaw go raz, bez konieczności majstrowania przy konfiguracji XCode, AndroidManifest.xml itp.
Ustawianie orientacji w czasie kompilacji:
Jeśli tworzysz swoje aplikacje React Native za pomocą Expo, możesz użyć orientation
pola w swoim app.json
pliku - na przykład:
{
"expo": {
"name": "My app",
"slug": "my-app",
"sdkVersion": "21.0.0",
"privacy": "public",
"orientation": "portrait"
}
}
To może być ustawiony "portrait"
, "landscape"
albo "default"
co oznacza AutoRotate bez blokady orientacji.
Ustawianie orientacji w czasie wykonywania:
Możesz również zastąpić to ustawienie w czasie wykonywania, uruchamiając na przykład:
Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
gdzie argumentem może być:
ALL
- Wszystkie 4 możliwe orientacje
ALL_BUT_UPSIDE_DOWN
- Wszystkie oprócz odwróconego portretu mogą mieć wszystkie 4 orientacje na niektórych urządzeniach z Androidem.
PORTRAIT
- Orientacja pionowa, może być również odwrócona w pionie na niektórych urządzeniach z Androidem.
PORTRAIT_UP
- Tylko portret do góry nogami.
PORTRAIT_DOWN
- Tylko portret do góry nogami.
LANDSCAPE
- Dowolna orientacja pozioma.
LANDSCAPE_LEFT
- Tylko lewy poziom.
LANDSCAPE_RIGHT
- Tylko prawy krajobraz.
Wykrywanie obrotu:
Jeśli zezwolisz na więcej niż jedną orientację, możesz wykryć zmiany, nasłuchując change
zdarzeń na Dimensions
obiekcie:
Dimensions.addEventListener('change', (dimensions) => {
// you get:
// dimensions.window.width
// dimensions.window.height
// dimensions.screen.width
// dimensions.screen.height
});
lub możesz po prostu uzyskać wymiary w dowolnym momencie za pomocą Dimensions.get('window')
i w Dimensions.get('screen')
ten sposób:
const dim = Dimensions.get('window');
// you get:
// dim.width
// dim.height
lub:
const dim = Dimensions.get('screen');
// you get:
// dim.width
// dim.height
Kiedy słuchasz wydarzenia, dostajesz jedno window
i drugie screen
w tym samym czasie, dlatego masz do niego inny dostęp.
Dokumentacja:
Więcej informacji: