我想只支持纵向视图。如何让React Native应用程序不自动旋转?我尝试搜索留档和Github问题,但没有找到任何有用的东西。
目前,许多官方的React原生指南都建议在构建React原生应用时使用Expo,所以除了现有的答案,我还会添加一个Expo专用的解决方案,值得注意的是,因为它适用于iOS和Android,并且您只需设置一次,无需与XCode config、AndroidManifest.xml等混淆。
如果您正在使用Expo构建React本地应用程序,那么您可以使用< code>app.json文件中的< code>orientation字段,例如:
{
"expo": {
"name": "My app",
"slug": "my-app",
"sdkVersion": "21.0.0",
"privacy": "public",
"orientation": "portrait"
}
}
它可以设置为“纵向”
、
或
,这意味着无方向锁定的自动旋转。
您还可以在运行时通过运行来覆盖该设置,例如:
Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
其中的参数可以是:
所有
—所有4种可能的方向 < Li > < code > ALL _ BUT _ UPSIDE _ DOWN —除了纵向以外,在某些Android设备上可以是所有4个方向。 < li>
纵向
—纵向,在某些Android设备上也可以是反向纵向。 < li>
纵向向上
—仅纵向向上。 < li>
纵向_向下
—仅颠倒纵向。 < li>
横向
—任何横向方向。 < li>
横向_左侧
—仅左侧横向。 < li>
横向_右侧
—仅右侧横向。
如果允许多个方向,则可以通过侦听Dimensions(维度)
对象上的更改
>事件来检测更改:
Dimensions.addEventListener('change', (dimensions) => {
// you get:
// dimensions.window.width
// dimensions.window.height
// dimensions.screen.width
// dimensions.screen.height
});
也可以随时使用dimensions获取尺寸。get('window')
和尺寸。获取(“屏幕”)
如下:
const dim = Dimensions.get('window');
// you get:
// dim.width
// dim.height
或:
const dim = Dimensions.get('screen');
// you get:
// dim.width
// dim.height
当您收听事件时,您将同时获得窗口
和屏幕
,因此这就是为什么您以不同的方式访问它的原因。
有关更多信息,请参见:
iOS,Jarek的回答很棒。
对于Android系统,您需要编辑Android智能.xml文件。将以下行添加到要锁定到纵向模式的每个活动:
android:screenOrientation="portrait"
因此,完整的示例可能如下所示:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
请参阅文档中可用屏幕方向属性的完整列表,网址为:https://developer.android.com/guide/topics/manifest/activity-element.html
React Native应用程序在很大程度上只是一个普通的iOS应用程序,因此您可以用与其他所有应用程序完全相同的方式进行操作。只需在常规应用程序属性中取消选中(在XCode中)允许的“向左横向”和“向右横向”设备方向:
问题内容: 我有一个UIViewController,我想在不同情况下禁用或启用屏幕旋转 例: 我怎样才能做到这一点? 问题答案: 我有答案。在上,如果您旋转设备,按下ViewController等,则始终调用此函数 迅速 更新 3/4 是自定义参数。 如何使用: 在Appdelegate中: 在ViewController中: 调用方法ViewDidLoad或viewWillAppear时。我们
我创造了一个旋转器,它的工作很好。 我想要的只是,当我单击spinner时,它显示。我想要下拉列表。 如果有人需要更多关于旋转器的细节,我可以发布更多的细节。欢迎提出建议。
问题内容: 如何在ReactNative中水平和垂直居中放置文本? 我在rnplay.org中有一个示例应用程序,其中 justifyContent =“ center” 和 alignItems =“ center” 不起作用:https : **//rnplay.org/apps/AoxNKQ** 文本应居中。为什么在文本(黄色)和父容器之间的顶部留有空白? 码: 问题答案: 从‘样式删除,和
问题内容: 我最近正在阅读 Linux Kernel Development ,并且我有一些有关禁用抢占的问题。 在第7章的“中断控制”部分中,它表示: 此外,禁用中断也会禁用内核抢占。 我还从书中了解到,在以下情况下可能会发生内核抢占: 当中断处理程序退出时,返回内核空间。 当内核代码再次被抢占时。 如果内核中的任务显式调用schedule() 如果该内核中的任务阻塞(导致对schedule()
问题内容: 使用杰克逊2.1,如何禁用错误消息似乎要禁用的消息? 我以为这只是世界上最简单的事情,但是该死了,它太迟了,我还没有找到一个简单的教程或任何特别明显的东西。?他们为什么要使它如此直观,然后使错误消息看起来如此简单? 尽管我 确实 喜欢该错误消息,但我的意思是,它比NPE更好。 我假设有一种使用注释的方法-但是我根本不希望将它们用于我正在做的简单工作! 问题答案: 我相信,您可以按班级或