离子屏幕方向 Cordova 插件在 iOS 环境中未锁定为纵向模式
Posted
技术标签:
【中文标题】离子屏幕方向 Cordova 插件在 iOS 环境中未锁定为纵向模式【英文标题】:Ionic Screen Orientation Cordova Plugin is not locking to portrait mode in iOS environment 【发布时间】:2015-07-10 08:29:23 【问题描述】:我正在使用带有插件 cordova-plugin-screen-orientation
的 Ionic 框架,我想将我的应用程序方向锁定为始终为纵向。
我尝试通过将下一行放在config.xml
中来做到这一点
<preference name="orientation" value="portrait" />
【问题讨论】:
你有ios和android屏幕方向插件吗? 你不需要插件,卸载它,然后重试。您是否正在编辑根 www 文件夹?您是否从 CLI 运行应用程序? 【参考方案1】:希望我不会迟到。
您可以轻松做到这一点,但使用不同的 Cordova 插件。
首先您需要使用 Cordova net.yoik.cordova.plugins.screenorientation 插件。
您可以使用它轻松地以编程方式锁定/解锁屏幕方向。
// set to either landscape
screen.lockOrientation('landscape');
// allow user rotate
screen.unlockOrientation();
如果您想对所有页面/视图执行此操作,请执行以下操作:
$ionicPlatform.ready(function()
screen.lockOrientation('landscape');
);
接下来,要仅在选定页面上执行此操作,请在适当的页面控制器中使用此代码:
$scope.$on('$ionicView.beforeEnter', function()
screen.lockOrientation('landscape');
);
如果在右控制器中执行,此代码将在视图可见之前触发方向锁定。
如果您想了解更多信息,请阅读此内容:http://www.gajotres.net/changing-locking-screen-orientation-in-ionic-application/
【讨论】:
这个不错,但是浏览器支持不行:caniuse.com/#feat=screen-orientation【参考方案2】:我正在使用 Ionic/Capacitor 和 Vuejs,iOS 插件也有同样的问题。这就是我所做的,它解决了问题。
修复在 iOS 上能够将屏幕锁定到指定方向的错误:
1. 为您的应用打开 AppDelegate.swift。你可以在 ios/App/App/AppDelegate.swift 中找到这个文件
2.添加以下代码:
var orientationLock = UIInterfaceOrientationMask.all
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask
return self.orientationLock
@objc func setOrientationLock(_ notification: Notification)
if let data = notification.userInfo as? [String: Int]
for (_, mask) in data
switch mask
case 1: self.orientationLock = UIInterfaceOrientationMask.portrait
break;
case 2: self.orientationLock = UIInterfaceOrientationMask.portraitUpsideDown
break;
case 3: self.orientationLock = UIInterfaceOrientationMask.landscapeRight
break;
case 4: self.orientationLock = UIInterfaceOrientationMask.landscapeLeft
break;
case 5: self.orientationLock = UIInterfaceOrientationMask.landscape
break;
default: self.orientationLock = UIInterfaceOrientationMask.all
3. 在同一个文件中找到:“func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool ”
4.在函数内“return true”语句之前添加以下代码:
NotificationCenter.default.addObserver(self, selector: #selector(self.setOrientationLock), name: NSNotification.Name(rawValue: "CAPOrientationLocked"), object: nil)
5. 离子构建、离子上限复制、离子上限同步和问题已修复!
【讨论】:
以上是关于离子屏幕方向 Cordova 插件在 iOS 环境中未锁定为纵向模式的主要内容,如果未能解决你的问题,请参考以下文章
Cordova 的插件(屏幕方向/应用程序版本)不适用于 Ionic 5 / Angular 11
后台服务科尔多瓦离子应用程序。背景插件在 ios 8.3 上不起作用
Ionic 3 cordova-branch-sdk 插件不起作用(ios)