模仿iOS 6相机旋转

10
我一直在使用AVFoundation进行自定义相机的实验,并且到目前为止一切都很好。AVCam示例帮了我很大忙,我对结果非常满意。
然而,有一件事我仍然不理解,就是iOS默认相机应用程序如何处理旋转问题。似乎背景根本不会旋转,但所有叠加的控件却会旋转。
这可能不是特定于相机的问题,但我该如何实现这种行为?
简而言之,有一个背景相机层,上面放置控件,如何在不旋转背景层的情况下旋转控件层?

1
你可以重写 willAnimateRotationToInterfaceOrientation:duration: 方法并手动调整所有控件的大小。这可能需要一些微调才能达到预期效果,但对我来说总是有效的。http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html - Greg
或者,您可以采用hackish方法,将相机视图插入应用程序的根UIWindow中,并将控件的视图控制器的背景设置为透明,以便视图控制器旋转但窗口不旋转,并且窗口中的相机视图在其后面可见。 - Greg
你的第一个建议是我最初的想法,我可能会选择它。第二个建议在iOS6及以上版本上不起作用,因为子视图的旋转能力必须是父视图旋转能力的适当子集。 - defer
1个回答

1

我一直在思考同样的问题......

我的猜想是原生相机视图控制器不使用UIViewController旋转机制进行旋转

  • 没有状态栏旋转
  • 子视图的'基本'旋转 - 工具栏不移动,按钮进行动画
  • 当然包含相机预览的视图不会旋转 :)

相反,它必须调用[UIDevice beginGeneratingDeviceOrientationNotifications]并处理特定的UI更新(灰色按钮淡出位置切换和工具栏按钮图像旋转)

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(yourUpdateMethodForRotation:) notificationName: UIDeviceOrientationDidChangeNotification];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接