简述
需要保持自动旋转,但在方向改变时排除一个UIView的自动旋转,如何实现?
背景
我需要在伴随自动旋转的动画中保持一个UIView的静止(即控件在其原地旋转),类似于iOS相机应用程序处理旋转的方式。
尝试过的方法
从
shouldAutorotate()
返回false
,订阅UIDeviceOrientationDidChangeNotification
,并尝试为每个视图单独手动处理旋转事件。如果您不需要更改任何UIView的位置,则效果很好,否则在确定它应该停留在哪里以及如何将其放置在那里方面会很麻烦
在主UIWindow下放置一个不旋转的UIWindow,并将主UIWindow的背景颜色设置为透明。
如果只有一个项目,则此方法效果很好,但我不想管理一堆UIWindows
反向旋转,即将UIView旋转到相反的方向。 不可靠,看起来奇怪,也会引起眩晕
在
viewWillTransitionToSize
方法中覆盖动画。 失败了还有一堆其他难以在此列出的事情,但它们都失败了。
问题
这个可以做到吗?如果可以,怎么做呢?
我支持iOS8及以上版本
更新 根据@Casey的示例,这是视图应该如何布局/方向:
orientationDidChangeNotificationReceived:
通知并将 UIView 旋转到相反的方向,以有效地抵消设备的旋转呢? - Michael