我有一个以纵向视图设计的视图控制器。我有另一个在Landscape视图中设计的视图控制器(在故事板中)。在我的第一个视图控制器(肖像VC)上,我有一个按钮,可以将您带到风景VC。当您单击按钮时,横向视图控制器最初以纵向视图显示,并且在旋转之前不会更改。我想让这个横向视图控制器自动显示在横向而不必旋转它。 我一直在快速编码,并没有运气。在我的plist菜单中,我启用了所有方向。 任何帮助都会很棒。
答案 0 :(得分:2)
您应该在second viewcontroller
viewDidLoad
(设计为横向)中添加此内容
它位于swift3
:
let value = UIInterfaceOrientation.landscapeLeft.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
UIViewController.attemptRotationToDeviceOrientation()
希望它能帮到你:)
答案 1 :(得分:1)
我正在处理类似的情况,我想加载并保持我的第一个ViewController处于横向方向,同时允许子视图根据需要切换
我想放置
override func viewDidLoad() {
super.viewDidLoad()
let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")
}
应该以横向模式加载您的视图...但是如果以纵向方向拿着手机,它将很快旋转......这就是我正在处理的部分......如何阻止旋转。
答案 2 :(得分:0)
我相信实现这一目标的最好和最可靠的方法是覆盖两个属性 - 并避免窗口的力方向变化(如其他人所建议的那样)。
这就是我如何让我的一个视图控制器始终以横向模式显示并保持在那里,而不影响整个导航堆栈。将这两个覆盖添加到横向视图控制器:
result = Record.objects.values('group_id', 'update_date', 'status').annotate(count=Count('update_date'))
这将防止视图控制器在设备方向改变时自动旋转。现在视图控制器不再自行旋转,您需要做的就是请求您想要的方向:
override var shouldAutorotate: Bool {
false
}
瞧!应该做你想做的。