2017年更新: {"orientation": "portrait"}
目前,许多像这样的官方React Native指南都建议在构建React Native应用时使用Expo。因此,除了现有答案外,我还将添加一个Expo专用解决方案,这一点值得注意,因为它适用于iOS和Android,并且您只需要只需设置一次即可,而无需与XCode配置,AndroidManifest.xml等混淆。
在构建时设置方向:
如果您正在使用Expo构建React Native应用,则可以使用文件中的orientation
字段app.json
-例如:
{
"expo": {
"name": "My app",
"slug": "my-app",
"sdkVersion": "21.0.0",
"privacy": "public",
"orientation": "portrait"
}
}
可以将其设置为"portrait"
,"landscape"
或者"default"
意味着无需方向锁定即可自动旋转。
在运行时设置方向:
您还可以在运行时通过运行来覆盖该设置,例如:
Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
参数可以是:
ALL
—所有4种可能的方向
ALL_BUT_UPSIDE_DOWN
—在某些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
因此这就是您以不同方式访问事件的原因。
说明文件:
有关更多信息,请参见: