TL;DR
需要保持自动旋转,但在方向改变时排除一个 UIView 自动旋转,如何?
背景故事
我需要在动画过程中保持 UIView 静止并伴随自动旋转(这发生在方向改变时)。类似于 iOS 相机应用程序处理旋转的方式(即控件在其位置旋转)。
我尝试过的事情
-
返回false
from shouldAutorotate()
, 订阅UIDeviceOrientationDidChangeNotification
,并尝试分别手动处理每个视图的旋转事件。
如果您不需要更改 UIView 的任何位置,则效果很好,否则计算它应该在哪里结束以及如何到达那里会很痛苦
-
在主 UIWindow 下放置一个非旋转 UIWindow,并将主 UIWindow 背景色设置为清除。
如果只有一个项目,这很有效,但我不想管理一堆 UIWindows
反向旋转 即以与旋转相反的方向旋转 UIView。不可靠,而且看起来很奇怪,还会引起眩晕
覆盖动画viewWillTransitionToSize
方法。Failed
还有很多其他的事情很难在这里列出,但它们都failed.
Question
这可以做到吗?如果是这样,怎么办?
我支持iOS8+
Update这就是给定视图的布局/方向@Casey的例子 https://stackoverflow.com/questions/35191597/exclude-uiview-from-animating-on-autorotation#35193001:
我也遇到过同样的问题,并找到了 Apple 的示例,这有助于防止 UIView 旋转:https://developer.apple.com/library/ios/qa/qa1890/_index.html https://developer.apple.com/library/ios/qa/qa1890/_index.html
但是,如果 UIView 没有放置在屏幕中央,则应手动处理新位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)