ios - 仅允许一个 Controller 旋转

标签 ios swift uiinterfaceorientation

我需要锁定除一个 Controller 之外的所有 Controller 的自动旋转。它必须同时旋转纵向和横向。我读过这篇topic并尝试了这个解决方案

let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")

但我运气不好,没成功。也许这是因为我使用导航 Controller ,我在之前的链接中看到了一些提及,但我不明白方法,因为作者在 Xcode 首选项中允许方向模式,然后在代码中复制它们。

也许有人可以帮忙提供建议?

最佳答案

当前处理旋转的方法是viewControllerWillTransitionToSize:withTransitionCoordinator:。文档位于此链接:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIContentContainer_Ref/index.html#//apple_ref/occ/intfm/UIContentContainer/viewWillTransitionToSize:withTransitionCoordinator :

这有点不同,因为您使用的是屏幕尺寸而不是方向。这是处理尺寸和过渡的新方法。将其视为响应式布局,而不是不同的旋转值。换句话说,您不再是为“横向”设计,而是为宽度大于高度的屏幕进行设计。这是一个微妙但重要的区别。

您可以针对不同的 View Controller 以不同的方式实现此方法。如果您使用导航 Controller 并希望以不同的方式影响 subview ,首先我想说这很可能是糟糕的用户体验。但如果您仍然想这样做,您可以在导航 Controller 中处理旋转。

您不应该这样设置设备方向。

关于ios - 仅允许一个 Controller 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32955260/

相关文章:

ios - Diffable 快照重新加载节标题

iOS:CHCSVParser 和 NSPredicate?

iphone - 在 iPhone 上强制更改 UIInterfaceOrientation

json - 声明一个符合协议(protocol)的泛型常量

ios - 如何在 iOS 中相交两个矩形?

ios - 在 ios 上旋转时更改 subview

Swift:使用推送 View Controller 改变方向

iphone - 使用 sender 与 self._inputBox 关闭键盘

iphone - 如何在xcode中动态改变字体

iOS UILabels 中显示奇怪的文本