是否有像 didRotateFromInterfaceOrientation 这样的方法发生在 Swift 的旋转过程中?

Is there a method like didRotateFromInterfaceOrientation which happens during rotation in Swift?

我正在尝试在旋转设备时对 UIActivityIndi​​cator 进行 .StartAnimating,我正在尝试使用覆盖功能:didRotateFromInterfaceOrientation;然而,这个函数在旋转发生后被调用,我想在实际旋转期间制作动画。

我正在寻找一种在旋转时调用的方法。我查阅了文献,发现只有贬值的功能可能有用。

目前有什么方法可以用于此目的吗?

只需使用此代码片段检查方向变化

Swift 1.x/2.x

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    if UIDevice.currentDevice().orientation.isLandscape.boolValue {
        print("Landscape")
    } else {
        print("Portrait")
    }
}

Swift 3.x

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    if UIDevice.current.orientation.isLandscape {
        print("Landscape")
    } else {
        print("Portrait")
    }
}

我也能用这个:

override func willAnimateRotationToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
        self.activityIndicator.startAnimating()
    }

本质上,它允许在旋转期间使用视图。在我的例子中,当检测到旋转时,我的 UIActivityIndi​​cator 开始动画。然后是此代码:

override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {

        print("Rotation did occur.")

// my code entries.
// my code entries..
// my code entries...

        self.activityIndicator.stopAnimating()   
    }

在方向转换结束时,activity 指示器停止动画,并且由于我在属性检查器中勾选了“停止时隐藏”选项,它随后消失了。

试试这个代码,

Swift 3.x

 override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    if UIDevice.current.orientation.isLandscape {
        print("Landscape")
    } else {
        print("Portrait")
    }
    coordinator.animate(alongsideTransition: { _ in
      // Execute before rotation
    }) { _ in
        //Execute after rotation

    }
}