如何检测相机叠加视图旋转

时间:2012-02-20 15:17:04

标签: iphone ios cocoa-touch

我正在尝试根据屏幕方向在相机顶部制作相机叠加视图。由于即使您将屏幕方向锁定在设置上,相机仍会旋转其UI (实时预览中的闪光灯和相机按钮),如果我不移动我所拥有的元素叠加视图,它始终位于那些顶部。

我已经通过注册 UIDeviceOrientationDidChangeNotification 通知,然后阅读 [UIDevice currentDevice].orientation 上的值并设置我的转换值来完成此操作相机叠加视图。

问题是,当用户在iPhone上锁定界面时,UIDeviceOrientationDidChangeNotification通知不会触发(但摄像头一直在旋转!)。

我尝试了很多替代方案,例如注册PLCameraDeviceOrientationChangedNotification通知,我发现在将自己注册为每个通知的观察者时被解雇,但它不包含userInfo字典中的方向。 我还尝试设置NSTimer以每0.5秒触发并检查[UIDevice currentDevice].orientation,但它会在锁定时报告UIDeviceOrientationPortrait,无论实际的设备方向如何。

是否有任何方式我可以找到相机所处的方向,理想情况下,即使用户锁定了界面方向,它也会发生变化?

感谢。

1 个答案:

答案 0 :(得分:1)

我的观点是,如果用户锁定设备方向,则无法获取有关方向的设备消息。

但加速度计从不说谎,应该为您提供正确的信息。

Juste看看: Detect iPhone screen orientation

编辑: 这是苹果的样本,用于使用加速度计。

https://developer.apple.com/library/ios/#samplecode/AccelerometerGraph/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007410