Ios 设备旋转时切换视图控制器

Ios 设备旋转时切换视图控制器,ios,xcode,swift,uiviewcontroller,Ios,Xcode,Swift,Uiviewcontroller,我有两个视图控制器;一个用于风景,另一个用于肖像。 当设备旋转时,如何像本机iPhone计算器一样以编程方式切换这些选项 此外,纵向和横向视图控制器在xcode和swift中也各不相同 如果有任何帮助,我们将不胜感激。您不需要为这些应用程序使用不同的UIViewController。您只需覆盖UIViewController的某些方法,以便在设备方向更改时修改UI 您可以点击以下链接: 处理这类事情的现代方法是拥有一个可适应不同尺寸的控制器,不仅可以处理各种可能的屏幕尺寸,还可以处理iPad的

我有两个视图控制器;一个用于风景,另一个用于肖像。 当设备旋转时,如何像本机iPhone计算器一样以编程方式切换这些选项

此外,纵向和横向视图控制器在xcode和swift中也各不相同


如果有任何帮助,我们将不胜感激。

您不需要为这些应用程序使用不同的UIViewController。您只需覆盖UIViewController的某些方法,以便在设备方向更改时修改UI

您可以点击以下链接:


处理这类事情的现代方法是拥有一个可适应不同尺寸的控制器,不仅可以处理各种可能的屏幕尺寸,还可以处理iPad的滑动和分视图多任务处理。您应该对UI进行重大更改的地方(如计算器示例)是按大小分类差异,如下所述:

默认情况下,Interface Builder中的情节提要使用大小类。大小类是指定给用户界面元素(如场景或视图)的特征。它们提供了元素大小的粗略指示。Interface Builder允许您根据当前大小类自定义许多布局的功能。然后,布局会随着尺寸类别的更改而自动调整。具体而言,您可以根据每个尺寸类别设置以下功能:

  • 安装或卸载视图或控件
  • 安装或卸载约束
  • 设置“选择”属性的值(例如,字体和版面边距设置)
系统加载场景时,会实例化所有视图、控件和约束,并将这些项目指定给视图控制器中的相应出口(如果有)。无论场景的当前大小类别如何,都可以通过这些项目的出口访问它们。但是,只有为当前尺寸类别安装了这些项目时,系统才会将其添加到视图层次结构中

随着视图大小类的更改(例如,当您旋转iPhone或在全屏和拆分视图之间切换iPad应用程序时),系统会自动将项目添加到视图层次结构中或从中删除项目。系统还会设置对视图布局的任何更改的动画

优秀教程可在以下网址找到:


有时需要显示另一个控制器。 注意:。紧凑的特点是所有iPhone的景观。 我是这样做的:

    lazy var switchViewController: UIViewController? = {

        let vc = self.storyboard?.instantiateViewController(withIdentifier: "SwitchViewController")
        vc?.modalTransitionStyle = .crossDissolve
        return vc
    }()

    override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {

        coordinator.animate(alongsideTransition: { (_) in
            let orientation = newCollection.verticalSizeClass

            switch orientation {
            case .compact:
                self.present(self.switchViewController!, animated: true, completion: .none)

            default:
                self.switchViewController!.dismiss(animated: true, completion: .none)
            }
        }, completion: .none)

        super.willTransition(to: newCollection, with: coordinator)
    }

您不必在旋转时更改viewController,您可以使用size类并在旋转更改时修改UIViewController的UI。此外,纵向和横向视图控制器彼此不同“新建编辑”最佳和有用的答案