是否有一个类似didRotateFromInterfaceOrientation的方法,它在Swift中旋转时发生?

时间:2015-12-26 00:38:35

标签: ios swift swift3 uiinterfaceorientation

我正在尝试。在旋转设备时启动UIActivityIndi​​cator,我试图使用覆盖功能:didRotateFromInterfaceOrientation;但是,在旋转发生后调用此函数,我想在实际旋转期间进行动画处理。

我正在寻找一种在旋转时调用的方法。我查看了文献,并且发现了可能有用的折旧函数。

我目前可以使用哪种方法吗?

3 个答案:

答案 0 :(得分:11)

只需使用此代码段检查方向更改

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")
    }
}

答案 1 :(得分:3)

试试这段代码,

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

    }
}

答案 2 :(得分:0)

我也能用这个:

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()   
    }

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