仅为 AppDelegate.m iOS 中的首次启动设置特定方向
Posted
技术标签:
【中文标题】仅为 AppDelegate.m iOS 中的首次启动设置特定方向【英文标题】:Set specific orientation only for first launch in AppDelegate.m iOS 【发布时间】:2019-09-30 17:18:16 【问题描述】:我将这个库用于我的 react native 项目:
react-native-orientation-locker
我想要实现的是在除一个屏幕之外的所有屏幕上锁定方向为纵向。这个库工作正常,除非用户在横向模式下关闭应用程序,然后尝试在横向模式下打开它。应用程序在很短的时间内以横向打开,然后旋转为纵向。但我不想看到它,而是想在应用启动时以纵向模式打开它。
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
/*if (the app has just been launched)
return UIInterfaceOrientationMaskPortrait;
*/
// else, use the library to manage and set orientation
return [Orientation getOrientation];
我不知道如何检查第一次启动以及在上面的 if 语句中放入什么
【问题讨论】:
【参考方案1】:native-orientations 是一个非常好的库,可以检测和设置设备的方向。如您所见,文档具有解锁所有方向的属性。 IE; orientation.unlockAllOrientations()
您可以在 componentWillUnmount/ 中使用它来获取应用程序的当前状态并在它进入后台时调用该函数,否则它将强制解锁所有方向,然后您可以在组件确实安装时将方向设置为 potrait主文件,如 app.js。
componentDidMount()
Orientation.lockToPortrait(); // <----- This will reset stuff before the first unlock componentWillUnmount() Orientation.unlockAllOrientations(); Orientation.lockToPortrait();
希望对你有帮助....
【讨论】:
感谢@saikiran 的回复。这就是我已经在做的事情。但它不起作用。当我启动应用程序时,它从横向开始,然后旋转到纵向模式。问题是,关闭应用不会调用componentWillUnmount
好的,然后当您在渲染视图之前打开应用程序时,使用构造函数或 componentWillmount 更新方向【参考方案2】:
您可以简单地检查 UserDefaults 中的某些条目,如果它不包含您提供的对象,则它首先启动。之后,您可以将此对象放入 UserDefaults
例如
if([[NSUserDefaults standardUserDefaults] boolForKey:@"SOME_YOUR_KEY"] == nil)
// First faunch Code
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SOME_YOUR_KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];
else
// Not first launch
【讨论】:
根据您在安装后首次启动应用程序时给出的建议。但这不适用于关闭应用程序并再次打开。如我错了请纠正我。谢谢!!以上是关于仅为 AppDelegate.m iOS 中的首次启动设置特定方向的主要内容,如果未能解决你的问题,请参考以下文章
在 iCloud 环境中检测应用程序 (IOS/OSX) 的首次运行
IOS 使用 AppDelegate.m 中 ViewController.m 的方法?