使用界面方向替代设备方向

3

我一直在使用这个来处理方向变化

  if (UIDevice.current.orientation == UIDeviceOrientation.portrait)

如何在上述语法中将其替换为UIInterfaceOrientation.portrait。这是因为UIDeviceOreientation具有faceupfacedown,对我没有用。

2个回答

7
您可以将此替换为下面的行
if (UIApplication.shared.statusBarOrientation == UIInterfaceOrientation.portrait)

1
我的答案显示它已被弃用,那么我应该保持现有语法不变吗? - Coder221
@Coder221 让我们试试,你就会知道是否要使用它了 ;) - trungduc
@Coder221 由你决定。但让我们看看你的问题,你问如何在上面的语法中使用UIInterfaceOrientation.portrait替换它 ;) 我相信如果你使用我的代码,你的应用程序不会有任何问题。 - trungduc
是的,那就是我的问题,也许我应该就此提出另一个问题。 - Coder221
你能看一下这个问题吗?https://stackoverflow.com/questions/48303609/call-viewwilltransition-in-didselectitemat-indexpath - Coder221
显示剩余2条评论

2
Trungduc's答案是可行的,但正如苹果在他们的文档中所述:
从iOS 8开始,您应该使用UITraitCollection和UITraitEnvironment API以及在这些API中使用的尺寸类属性,而不是使用UIInterfaceOrientation常量或以其他方式编写您的应用程序。
编辑:如果您不想涉及UITraitCollection提供的灵活性,则可以保留您的方法,但简化它。
if (UIDevice.current.orientation.isPortrait) {
}

那么什么是未被弃用的语法? - Coder221
@Terje 你是个非常棒的人,请不要抄袭其他答案 ;)。祝你好运。希望你的答案可以被标记为正确答案在这个问题中:https://stackoverflow.com/questions/47119076/corner-radius-on-a-uiview-not-working-as-expected/47119191#47119191 - trungduc
请问您能否解释一下UITraitCollection的灵活性,以我的语法为例? - Coder221
就语法而言,您无需使用UITraitCollection。如果我不了解您的应用程序,我无法发表评论,但是如果您在Google上搜索,会有一些关于UITraitCollection的好博客介绍。我认为苹果试图表达的观点是,现在我们开始拥有许多不同的屏幕尺寸和设备,不一定只考虑纵向和横向,而是要更细致地调整您的界面。 - Terje
1
感谢您的解释,我会仔细研究。 - Coder221

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接