以编程方式禁用纵向锁定

时间:2017-07-17 16:30:55

标签: ios swift orientation

在我的相机应用程序中,一切都工作得很好。如果用户手机上未启用纵向方向锁定,则一切正常。

但是,如果用户启用了纵向方向锁定并且它们侧向录制,则视频将以纵向模式录制,但视频内部的所有内容都是侧向录制的。

有没有办法检查是否启用了纵向锁定或以何种方式解决此问题?谢谢。

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用以下方法禁用纵向锁定:

- (NSUInteger)lockorientation
{
  return UIInterfaceOrientationMaskPortrait;
}

答案 1 :(得分:0)

有几件事。您可以在视图控制器中覆盖正在使用相机的shouldAutorotate功能,如下所示:

override func shouldAutorotate() -> Bool { return true }

然后,您可以在完成相机后再次将其设置为false,以便保留其设备设置。不确定这是不是最好的方法,但是是一种方式。

您可以解决此问题的另一种可能方法是始终检查设备方向。即使UI的视觉方向没有自动旋转(https://developer.apple.com/documentation/uikit/uidevice/1620053-orientation),设备仍将检测设备的物理方向。因此,以下显示了可能的设备方向,根据Apple文档(https://developer.apple.com/documentation/uikit/uideviceorientation

enum UIDeviceOrientation : Int { case Unknown case Portrait // Device oriented vertically, home button on the bottom case PortraitUpsideDown // Device oriented vertically, home button on the top case LandscapeLeft // Device oriented horizontally, home button on the right case LandscapeRight // Device oriented horizontally, home button on the left case FaceUp // Device oriented flat, face up case FaceDown // Device oriented flat, face down }

知道那些你可以检查当前的方向是否是其中之一:

if (UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeLeft || UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeLeft) { ...override autorotate to true }

这些可能会解决您的问题。