Objective c 模拟iOS 6摄像头旋转

Objective c 模拟iOS 6摄像头旋转,objective-c,ios,avcam,Objective C,Ios,Avcam,我一直在用AVFoundation做一些定制相机的实验,到目前为止一切都很好。AVCam的例子让我走了很远,我对结果非常满意 然而,我仍然不明白iOS默认的摄像头应用程序如何处理旋转。看起来背景根本不旋转,但所有覆盖控件都旋转 这可能不是摄像机特有的问题,但我如何才能做到这一点 TLDR:有一个背景摄影机层,顶部有控件,如何在不旋转背景层的情况下旋转控件?我一直在想同样的问题 我猜想本机相机viewController不会使用UIViewController旋转机制旋转 没有状态栏旋转 子视图

我一直在用AVFoundation做一些定制相机的实验,到目前为止一切都很好。AVCam的例子让我走了很远,我对结果非常满意

然而,我仍然不明白iOS默认的摄像头应用程序如何处理旋转。看起来背景根本不旋转,但所有覆盖控件都旋转

这可能不是摄像机特有的问题,但我如何才能做到这一点


TLDR:有一个背景摄影机层,顶部有控件,如何在不旋转背景层的情况下旋转控件?

我一直在想同样的问题

我猜想本机相机viewController不会使用
UIViewController
旋转机制旋转

  • 没有状态栏旋转
  • 子视图没有“基本”旋转-工具栏不移动,按钮已设置动画
  • 当然,包含摄影机预览的视图不会旋转:)
相反,它必须调用
[UIDevice BegingeratingDeviceOrientationNotifications]
并处理特定的UI更新(灰色按钮淡入淡出位置切换和工具栏按钮图像旋转)


您可以覆盖WillAnimateRotationInterfaceOrientation:duration:并手动调整所有控件的大小。它可能需要一些调整来达到想要的效果,但它一直对我有效。或者,你也可以采取黑客手段,将相机视图插入应用程序的根
UIWindow
,并将带有控件的视图控制器的背景设置为透明,以便视图控制器旋转,但窗口不旋转,你的第一个建议是我最初的想法,我可能会同意。第二种方法不适用于iOS6及以上版本,因为子视图旋转功能必须是父视图旋转功能的适当子集。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(yourUpdateMethodForRotation:) notificationName: UIDeviceOrientationDidChangeNotification];