只允许 1 个视图控制器处于横向或纵向
Allow only 1 view controller to be in landscape or portrait
我的应用程序是纵向的我想做的是允许 1 个视图控制器纵向或横向我尝试在 AppDelegate 中使用此代码但我收到错误
func application(_ application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow) -> Int {
let currentViewController: UIViewController? = self.topView
// Get topmost/visible view controller
var currentViewController: UIViewController? = self.topViewController
// Check whether it implements a dummy methods called canRotate
if currentViewController?.responds(to: #selector(self.canRotate)) {
// Unlock landscape view orientations for this view controller
return .allButUpsideDown
}
// Only allow portrait (standard behaviour)
return .portrait
}
}
有谁知道如何在 swift 中做到这一点?
我在我的应用程序中采用了以下方法。
使用以下代码创建自定义 UINavigationController 并确保您的根导航控制器已更新以将其用作其 class。
import UIKit
class NavigationController: UINavigationController {
override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
if let _ = presentedViewController as? MyPortraitViewController {
return .portrait
}
return .allButUpsideDown
}
}
您可以将 MyPortraitViewController
替换为您希望偏离全局设置的视图控制器的 class 名称。
虽然我在此示例中使用 .portrait
,但您可以自由使用其他选项。
一个实施示例是替换情节提要中基本导航控制器的 class,如下所示。
我的应用程序是纵向的我想做的是允许 1 个视图控制器纵向或横向我尝试在 AppDelegate 中使用此代码但我收到错误
func application(_ application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow) -> Int {
let currentViewController: UIViewController? = self.topView
// Get topmost/visible view controller
var currentViewController: UIViewController? = self.topViewController
// Check whether it implements a dummy methods called canRotate
if currentViewController?.responds(to: #selector(self.canRotate)) {
// Unlock landscape view orientations for this view controller
return .allButUpsideDown
}
// Only allow portrait (standard behaviour)
return .portrait
}
}
有谁知道如何在 swift 中做到这一点?
我在我的应用程序中采用了以下方法。
使用以下代码创建自定义 UINavigationController 并确保您的根导航控制器已更新以将其用作其 class。
import UIKit
class NavigationController: UINavigationController {
override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
if let _ = presentedViewController as? MyPortraitViewController {
return .portrait
}
return .allButUpsideDown
}
}
您可以将 MyPortraitViewController
替换为您希望偏离全局设置的视图控制器的 class 名称。
虽然我在此示例中使用 .portrait
,但您可以自由使用其他选项。
一个实施示例是替换情节提要中基本导航控制器的 class,如下所示。