Reagieren-Native + Flex reagiert nicht auf die Ausrichtung ändern
Schreibe ich eine Universelle iPhone/iPad-Anwendung mit Reagieren-Native. Aber ich bin kämpfen, um meinen Blick richtig, wenn sich die Ausrichtung ändert. Im folgenden ist der Quelltext für js-Datei:
'use strict';
var React = require('react-native');
var {
Text,
View
} = React;
var CardView = require('./CardView');
var styles = React.StyleSheet.create({
container:{
flex:1,
backgroundColor: 'red'
}
});
class MySimpleApp extends React.Component {
render() {
return <View style={styles.container}/>;
}
}
React.AppRegistry.registerComponent('SimpleApp', () => MySimpleApp);
Dies ist, wie es rendert im Porträt (die richtig ist):
Jedoch, wenn das Gerät gedreht wird. Die rot-Ansicht nicht drehen entsprechend.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg ist:
Es ziemlich einfach, zu reagieren, Orientierung Veränderung reagieren nativen. Jede Ansicht in reagieren nativen haben einen listener aufgerufen onLayout, die aufgerufen wird, auf Orientierung ändern. Wir müssen nur, um dies umzusetzen. Es ist besser, store-dimension in state-variable und update auf jede Orientierung ändern, so dass die re-rendering geschieht nach der änderung. Andere weisen, die wir brauchen, um neu zu laden die anzeigen zu reagieren, die änderung der Ausrichtung.
Für neuere Versionen Reagieren die Einheimischen, die Ausrichtung ändern, die nicht unbedingt auslösen onLayout, aber
Dimensions
bietet mehr direkt relevant, Veranstaltung:Beachten Sie, dass dieser code ist für die root-Komponente der app. Wenn mit es tiefer in die app, müssen Sie auch eine entsprechende Methode removeEventListener nennen.
Können Sie reagieren-native-Orientierung zu erkennen und änderungen vornehmen, auf Orientierung ändern.
Auch verwenden Dimension Klasse die Größe(Breite, Höhe).
Diese Methoden verwenden, um mit zu spielen Orientierungen
Ich benutzt das auch, aber Es ist die Leistung zu gering ist.
Hoffe, das hilft...
OK. Ich fand eine Antwort auf diese Frage. Die Notwendigkeit zur Umsetzung der folgenden in unserem viewcontroller und rufen aktualisieren unsere ReactNative anzeigen drin.
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
Für jemand mit Exponent müssen Sie nur entfernen Sie die
Ausrichtung
Schlüssel von Ihremexp.json
.exp.json
Weder
onLayout
oderDimensions.addEventListener
für uns gearbeitet, in Reagieren 16.3.Hier ist eine flexbox-hack, die das Bild Größe auf die Veränderung der Orientierung. (Die wir auch Reagieren, ist schön, aber schlecht dokumentiert ImageBackground-Komponente, um text oben im Bild):
Den
imageHeight
Stil wird die Höhe der View-Komponente (die für den Benutzer unsichtbar), und Flexbox wird dann automatisch flex das Bild auf der gleichen Zeile die gleiche Höhe haben. Sie sind also im Grunde die Einstellung der Höhe des Bildes in einer indirekten Art und Weise. Flex sorgt dafür, dass Sie beugt sich zu füllen, der gesamte container auf die Ausrichtung ändern.Appart aus der Antwort von user
Rajan Twanabashu
Sie können auch die reagieren-native-styleman Bibliothek zu handhaben Ausrichtung ändern, ganz einfach:Hier ist ein Beispiel, wie Sie das tun würden: