我试图在我的应用程序中强制只有一个视图在横向模式,我打电话
override func shouldAutorotate() -> Bool {
print("shouldAutorotate")
return false
}
override func supportedInterfaceOrientations() -> Int {
print("supportedInterfaceOrientations")
return Int(UIInterfaceOrientationMask.LandscapeLeft.rawValue)
}
override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
return UIInterfaceOrientation.LandscapeLeft
}
视图以纵向模式启动,并在更改设备方向时保持旋转 .
永远不会调用shouldAutorotate .
任何帮助,将不胜感激 .
13 回答
它可能对其他人有用,我找到了一种强制视图以横向模式启动的方法:
把它放在viewDidLoad()中:
和,
斯威夫特4
//如果您的视图嵌入在导航控制器中,则仅上述操作无效 . 你必须级联//所以在类定义后添加以下扩展名
斯威夫特3
Swift 4 ,经测试 iOS 11
您可以在 projectTarget -> General -> DeploymentInfo(Device Orientation) -> Portrait 中指定方向(Landscapeleft和Landscaperight是可选的)
AppDelegate
LandScpaeViewController
OnDismissButtonTap
而已 . :)
使用Swift 2.2
尝试:
其次是:
来自Apple的UIViewController类参考:
然后,正如其他人建议的那样,根据需要覆盖以下方法:
我有一个签名视图的类似问题,这解决了我 .
对我来说,最好的结果来自Zeesha的答案和sazz的答案 .
将以下行添加到AppDelegate.swift:
将以下行添加到视图控制器类:
将以下行添加到视图控制器的
viewDidLoad()
:(可选)将此行添加到您的解散功能:
这些代码行的作用是将默认方向设置为纵向,在视图控制器加载时将其旋转,然后在视图控制器关闭后最终将其重置为纵向 .
我需要强制一个控制器进入纵向 . 添加这个对我有用 .
iOS 11的swift 4
适用于Swift 2.2
Swift 3.这会在每次用户重新打开应用程序时锁定方向 .
斯威夫特4
试图保持方向没有任何效果,但这对我来说:
根据documentation of supportedInterfaceOrientations,
shouldAutorotate
方法应该在Objective-C中返回true
或YES
,以便考虑supportedInterfaceOrientations
.我的解决方案是
刚刚在AppDelegate中添加了以下代码
并调用以下代码进行更改
或者如下