iphone - 如何检测相机叠加 View 旋转

标签 iphone ios cocoa-touch

我正在尝试根据屏幕方向在相机顶部制作一个相机覆盖 View 。因为即使您在设置中锁定屏幕方向,相机仍会旋转其 UI(实时预览中的闪光灯和相机按钮),如果我不移动我拥有的元素覆盖 View ,它停留在那些之上。

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

问题在于,当用户锁定其 iPhone 上的界面时,UIDeviceOrientationDidChangeNotification 通知不会触发(但相机保持旋转!)。

我已经尝试了很多替代方法,比如注册到 PLCameraDeviceOrientationChangedNotification 通知,我发现在将自己注册为每个通知的观察者时被触发,但它不包含方向用户信息字典。 我还尝试设置一个 NSTimer 每 0.5 秒触发一次并检查 [UIDevice currentDevice].orientation,但它总是在锁定时报告 UIDeviceOrientationPortrait,无论实际设备如何方向。

有没有任何方法我可以找出相机的方向,理想情况下即使在用户锁定界面方向的情况下也能在它发生变化时得到通知?

谢谢。

最佳答案

我认为,如果用户锁定了设备方向,就不可能获得有关方向的设备消息。

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

只需看看: Detect iPhone screen orientation

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

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

关于iphone - 如何检测相机叠加 View 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9363449/

相关文章:

iphone - 具有CFSocket的BAD_EXC_ACCESS

ios - 当 View 扩展到全屏时 MPMoviePlayerController 被释放

ios - 触摸物体内部的位置

ios - Facebook SDK 4.5 IOS 9

ios - UITableView 不响应 UITableViewCell 的选择

ios - 可以在单独的线程中使用 NSFetchedResultsController 来加载 TableViewCells 吗?

iphone - Xcode 4.6 失败,退出代码为 255

iphone - 推特发帖错误

iphone - 有什么办法可以降级到iOS4

ios - 添加 FCM 支持后,本地通知在 iOS 上停止工作