class MyViewController:UIViewController {
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
}
以下是可能的选项:
public struct UIInterfaceOrientationMask : OptionSet {
public init(rawValue: UInt)
public static var portrait: UIInterfaceOrientationMask { get }
public static var landscapeLeft: UIInterfaceOrientationMask { get }
public static var landscapeRight: UIInterfaceOrientationMask { get }
public static var portraitUpsideDown: UIInterfaceOrientationMask { get }
public static var landscape: UIInterfaceOrientationMask { get }
public static var all: UIInterfaceOrientationMask { get }
public static var allButUpsideDown: UIInterfaceOrientationMask { get }
}
扩展
如果您希望能够区分iPad或iPhone,可以使用UIUserInterfaceIdiom:
override var supportedInterfaceOrientations: UIInterfaceOrientationMask{
get{
return UIDevice.current.userInterfaceIdiom == .phone ? [.portrait, . portraitUpsideDown]:.all //OBS -> You can also return an array
}
}
其中:
public enum UIUserInterfaceIdiom : Int {
case unspecified
@available(iOS 3.2, *)
case phone // iPhone and iPod touch style UI
@available(iOS 3.2, *)
case pad // iPad style UI
@available(iOS 9.0, *)
case tv // Apple TV style UI
@available(iOS 9.0, *)
case carPlay // CarPlay style UI
}
8条答案
按热度按时间ldfqzlk81#
我有答案。在
AppDelegate
上,如果你旋转设备,按viewcontroller,等等。这个函数总是调用swift 3/4的更新
self.restrictRotation
是自定义参数。使用方法:
当方法ViewDidLoad或viewWillAppear被调用时.我们会这样改变:
然后调用AppDelegate上的此方法。
sqougxex2#
你只需要在你的
UIViewController
中实现shouldAutorotate
和supportedInterfaceOrientations
。您还可以指定可用的方向。以下是一个只有纵向方向的示例:
编辑:如果你想支持关于一个标志的不同方向,你只需要这样做:
(If
myFlag
为真,则允许Landscape
方向。否则,允许所有方向)。rwqw0loc3#
雨燕4
i1icjdpr4#
在swift 5中,如前所述,如果您希望允许(避免其他)特定UIViewController以特定方向旋转,则必须覆盖UIViewController类中的“supportedInterfaceOrientations”,如下所示:
以下是可能的选项:
扩展
如果您希望能够区分iPad或iPhone,可以使用UIUserInterfaceIdiom:
其中:
kmb7vmvb5#
最常见请求的简单解决方案(iPhone:纵向,iPad:所有)在您的
AppDelegate
:lrl1mhuk6#
发现这是迄今为止最简单的实现,并且适合在特定的视图控制器上使用。
9gm1akwq7#
雨燕5
eiee3dmh8#
在“目标”-〉“常规”-〉“部署信息”-〉“纵向”中设置设备纵向方向