如何在 SwiftUI 中强制视图保持横向模式

问题描述 投票:0回答:1

我正在创建一个应用程序,其中一个视图只能在横向模式下正确显示。我需要一种方法来强制一个特定视图保持横向模式而不影响其他视图。

我四处搜寻,发现了几年前的一些问题,这些问题表明没有一个好的方法可以做到这一点。这仍然是真的吗?如果是这样,是否至少有一个好的方法来检测当前方向?

ios swift swiftui landscape-portrait
1个回答
0
投票

要强制 iOS Swift 应用程序中的特定视图保持横向模式而不影响其他视图,您可以使用以下方法:

1。全局禁用自动旋转:

在您的项目设置中,全局禁用自动旋转。为此:

打开您的 Xcode 项目。 转到应用程序的目标设置。 在“常规”选项卡下,找到“部署信息”部分。 取消选中除横向左和横向右之外的所有方向。

2。为整个应用程序启用旋转:

在您的应用程序委托 (AppDelegate.swift) 中,实现以下方法以允许整个应用程序旋转:

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.all
}

这将默认启用所有视图的旋转。

3.将特定视图锁定为风景:

在要强制横向模式的视图控制器中,重写以下方法:

override var shouldAutorotate: Bool {
    return true
}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return .landscapeLeft // or .landscapeRight if needed
}

这些方法允许特定的视图控制器在呈现时旋转到横向。

4。展示景观视图控制器:

要显示应处于横向模式的视图控制器,可以使用present(_:animated:completion:)方法:

let landscapeViewController = YourLandscapeViewController() // Instantiate your landscape view controller
self.present(landscapeViewController, animated: true, completion: nil)

这将以横向模式显示 YourLandscapeViewController。

通过执行以下步骤,您可以确保仅特定视图控制器 (YourLandscapeViewController) 以横向模式显示,而应用程序的其余部分保持在项目设置中配置的横向或纵向锁定。

© www.soinside.com 2019 - 2024. All rights reserved.