从自动旋转动画中排除UIView

MrH*_*aze 5 iphone orientation uiview ios swift

TL; DR

需要保持自转,但排除一个UIView在方向改变时自动旋转,如何?

背景故事

我需要在动画期间保持UIView静止,伴随着自转(在方向改变时发生).类似于iOS相机应用程序处理旋转的方式(即控件在其位置旋转).

我尝试过的事情

  • 返回falseshouldAutorotate(),订阅UIDeviceOrientationDidChangeNotification,并试图分开手动处理对于每个视图旋转事件.

    如果您不需要更改任何UIViews的位置,那么效果很好,否则很难弄清楚它应该在哪里结束以及如何在那里找到它

  • 在主UIWindow下放置一个非旋转UIWindow,并将主UIWindow背景颜色设置为clear.

    如果它只是一个项目,那么效果很好,但我不想管理一堆UIWindows

  • 反向旋转即旋转UIView的方向与旋转方向相反.不可靠,看起来很奇怪,它也是眩晕诱发

  • 覆盖viewWillTransitionToSize方法中的动画. 失败

  • 还有很多其他很难在这里列出的东西,但它们都失败了.

可以这样做吗?如果是这样,怎么样?

我支持iOS8 +


更新 这是@ Casey的例子中视图应该如何布局/定位:

在此输入图像描述

Cas*_*sey 0

我认为这个问题如此难以回答的部分原因是因为在实践中它并没有真正的意义。

假设我创建一个使用自动布局的视图,在纵向和横向上看起来像这样:

标准布局

如果你想阻止 c 像你问的那样旋转,你期望最终的视图是什么样子?它会是这三个选项之一吗?

不稳定的布局

如果没有您想要实现的纵向/横向视图的图形以及您希望的动画的描述,将很难回答您的问题。

您是否使用NSLayoutConstraint基于数学、故事板或框架的数学来布局您的视图?你能提供的任何代码也很棒