应用程序启动时锁定为纵向从横向旋转到纵向 (iOS)

Posted

技术标签:

【中文标题】应用程序启动时锁定为纵向从横向旋转到纵向 (iOS)【英文标题】:Locking to Portrait on app launching rotates from Landscape to Portrait (iOS) 【发布时间】:2018-11-09 08:28:56 【问题描述】:

我想将应用的第一个屏幕的方向锁定为纵向。在某些屏幕中,我需要横向。我正在使用react-native-orientation 插件。但是当我启动应用程序时,我看到一段时间是横向的,然后快速旋转到纵向。下一个屏幕没问题。

这是我的代码:

componentDidMount() 
    Orientation.lockToPortrait();

有没有可能解决这个性能问题?

【问题讨论】:

您要禁用应用中所有屏幕的横向显示吗? @Nino9612 不,在某些屏幕中我需要横向显示。 嗯好的。您正在为哪些平台开发? @Nino9612 适用于 iosandroid。但是这个问题只存在于iOS中。 你试过Orientation.lockToPortrait()之外的组件生命周期方法可能在app.js吗? 【参考方案1】:

在延迟锁定方向的页面中添加以下代码:

componentWillMount()
    Orientation.lockToPortrait();
    Orientation.addOrientationListener(this._orientationDidChange);


_orientationDidChange(orientation)     
    Orientation.lockToPortrait();  


componentWillUnmount() 
    // remove listener
    Orientation.removeOrientationListener(this._orientationDidChange);

【讨论】:

没有帮助。【参考方案2】:

react-native-orientation 似乎不再维护。

我鼓励您使用react-native-orientation-locker,它还提供Orientation.lockToPortrait()

【讨论】:

结果与 react-native-orientation 相同。 你的设备是什么?你的操作系统版本号是多少? 我的设备是 iPhone SE。 iOS 12.0.1。【参考方案3】:

这是我的错误。 我在一类中使用了冗余代码:

const setLandscapeRightOrientation = Platform.select(
    ios: Orientation.lockToLandscapeRight(),
    android: Orientation.lockToLandscapeLeft(),
);

【讨论】:

以上是关于应用程序启动时锁定为纵向从横向旋转到纵向 (iOS)的主要内容,如果未能解决你的问题,请参考以下文章

旋转到横向后,iOS 边界发生变化,然后又回到纵向

iOS App:窗口旋转总是纵向而不是横向

当我在 iOS7 的 iPad 中将视图从纵向旋转到横向或反之亦然时,UITextfield shouldChangeCharactersInRange 没有调用

仅在 iOS8 中,当 App 被锁定为纵向时,UIAlertView 更改为横向

Phonegap 页面旋转错误,横向显示为纵向

在视图中锁定纵向? IOS 7