Xcode 10.x中iOS中portait和横向的替代布局

Xcode 10.x中iOS中portait和横向的替代布局,ios,swift,landscape-portrait,Ios,Swift,Landscape Portrait,我需要有两个完全不同的布局为纵向和横向屏幕在我的iOS应用程序。例如,在iOS的计算器应用程序中: 纵向屏幕:在横向屏幕中:这不起作用,因为我在XCode 10.X中找不到该功能 我能想到的唯一方法是将一段代码放入UIViewController.viewDidLayoutSubviews()或UIView.layoutSubviews()。代码可能如下所示: if frame.size.width > frame.size.heigh { // adjust for landsca

我需要有两个完全不同的布局为纵向和横向屏幕在我的iOS应用程序。例如,在iOS的计算器应用程序中:
纵向屏幕:在横向屏幕中:这不起作用,因为我在XCode 10.X中找不到该功能

我能想到的唯一方法是将一段代码放入UIViewController.viewDidLayoutSubviews()或UIView.layoutSubviews()。代码可能如下所示:

if frame.size.width > frame.size.heigh {
   // adjust for landscape
} else {
   // adjust for portrait
}
layoutIfNeeded()
请注意,如果尝试在viewDidLoad()中执行此操作,则此操作将不起作用,因为此时可能未定义宽度和高度。此外,在UIViewController中,它是“view.frame.size.width”和view.layoutifneed()

我在我的应用程序中做了一些类似于调整iPhone SE用户界面的事情,效果很好

“调整”可以简单到更改某些约束,也可以复杂到删除某些视图和/或添加其他视图


此外,这与“特质”不同。在走这条路之前,我可能会建议你先探索一下特征。

你可以使用特征和大小类来创建。参考:Ashish Rana,使用Traits和Size类涉及约束,还有其他简单的方法吗?使用堆栈视图可以管理。