viewWillTransitionToSize锁定方向
问题描述:
即使用户锁定了他的方向,是否有任何方法检测屏幕方向?我的应用程序使用自定义相机视图,我希望能够根据方向以横向或纵向保存图像。我目前使用下面的代码来检测方向,但是这只有在用户没有锁定它时才有效。viewWillTransitionToSize锁定方向
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
let orientation: UIDeviceOrientation = UIDevice.current.orientation
switch (orientation) {
case .portrait:
print("Portrait")
case .landscapeRight:
print("Left")
case .landscapeLeft:
print("Right")
default:break
}
}
如果这不是正确的方式来使用相机的方向,请指导我在正确的方向。
答
然后,覆盖不需要横向模式,所有的视图控制器这些属性。
override var shouldAutorotate: Bool {
return false
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return .portrait
}
与嵌入式摄像头视图控制器只需设置shouldAutorotate假和增加额外supportedInterfaceOrientations了在景观中。
请注意,如果您使用的UINavigationController或的UITabBarController它不会工作,那么你应该创建这些扩展:https://stackoverflow.com/a/39674618/5381663
+0
我想我们误解了对方。我可能解释错了。如果在拍摄照片后硬编码UIImageOrientation,我可以将图像保存为横向或纵向。但是,我想在拍摄照片时检测设备是处于横向模式还是纵向模式,因此我知道如何旋转图像。这是有效的,但是如果用户的方向锁定在他的设备上,那么它不起作用。 –
你有你的自定义相机嵌入到您的视图控制器?如果是这样,我明白现在你只能在肖像模式下保存图像? – kamil3
是的,我需要一次拍摄多张图片,并将所有图片一次全部保存到我的个人资料中。所以苹果的普通图像选择器并不适合我。一切正常,除了现在所有的图像都是肖像。是否有绝对没有办法获得横向的图像?这似乎有点奇怪 –
这是一个黑客,但你可以利用加速度计和/或陀螺仪知道什么时候设备改变了方向 – Malik