我将TabNavigation
用于我的应用。在某些屏幕中,我希望它仅显示在portrait
方向,其他屏幕显示为landscape
。我找到了react-native-orientation
并尝试了我的屏幕:
屏幕1
import React from "react";
import Orientation from 'react-native-orientation';
import { Text } from 'react-native'
export default Screen1 extends React.PureComponent{
componentDidMount(){
Orientation.lockToLandscape();
}
componentWillUnmount(){
Orientation.unlockAllOrientations();
}
render() {
return(<Text>Screen 1</Text>);
}
}
屏幕2
import React from "react";
import Orientation from 'react-native-orientation';
import { Text } from 'react-native'
export default Screen2 extends React.PureComponent{
componentDidMount(){
Orientation.lockToPortrait();
}
componentWillUnmount(){
Orientation.unlockAllOrientations();
}
render() {
return(<Text>Screen 2</Text>);
}
}
标签导航
const AppNavigator = TabNavigator( {
Screen1: { screen: Screen1 },
Screen2: { screen: Screen2 },
});
但它总是肖像,这意味着它的方向始终基于我在TabNavigator
中添加的最后一个屏幕的方向设置。任何帮助表示感谢,提前谢谢!
修改1
我试过StackNavigation
,但它确实有效。仍然不知道为什么它不与TabNavigation
一起运行。
答案 0 :(得分:5)
我问了这个问题已经很长时间了,react-navigation
已升级到版本3。我的解决方案是每次按下时都设置标签的方向,因为当您单击时不会卸载标签屏幕点击其他标签。要解决此问题,您可以像这样将tabBarOnPress
添加到屏幕的navigationOptions
import Orientation from 'react-native-orientation';
...
class TabbarScreen1 extends Component {
static navigationOptions = {
...,
tabBarOnPress: ({ defaultHandler }) => {
// Orientation.lockToLandscape();
Orientation.lockToPortrait();
defaultHandler();
},
}
...
}