仅在设备旋转时旋转某些 UI 元素
Posted
技术标签:
【中文标题】仅在设备旋转时旋转某些 UI 元素【英文标题】:Rotating certain UI elements only on device rotation 【发布时间】:2014-02-11 18:23:03 【问题描述】:我有一个 UI,其中布局可以在任何方向上工作,但特定的 UI 元素需要旋转以匹配当前设备方向,并且状态栏应始终处于当前方向。为此,在我的视图控制器中,我有
- (BOOL)shouldAutorotate
return NO;
在我的设置中我这样做
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(interfaceChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
在选择器中,我将界面更改和状态栏方向设置为新设备方向。这在我的应用程序中运行良好,但有一次确实导致控制中心出现布局问题。我只是想检查一下这是实现这一目标的最佳/正确方法吗?
【问题讨论】:
【参考方案1】:1) 您可以通过以下链接创建 2 个视图层次结构并在 willRotateToInterfaceOrientation 中更改屏幕上的内容:Easiest way to support multiple orientations? How do I load a custom NIB when the application is in Landscape?
2) 或者您可以通过以下链接自行处理所有旋转:Rotating an image 90 degrees on same position when orientation changes。
【讨论】:
第一个并不真正适用,第二个是我描述的我已经做过的,我只是想验证这是最好的方法。我描述的方法改进了编号 2 中的链接,因为我从 shouldAutorotate 返回 NO,这比从 Apple 的文档中仅返回一个界面方向更有效: '如果您想暂时禁用自动旋转,请避免操作方向蒙版来执行此操作。相反,覆盖最顶层视图控制器上的 shouldAutorotate 方法。在执行任何自动旋转之前调用此方法。如果返回 NO,则旋转被抑制'以上是关于仅在设备旋转时旋转某些 UI 元素的主要内容,如果未能解决你的问题,请参考以下文章