4

当我旋转设备时,我正在尝试 .StartAnimating UIActivityIndi​​cator,我试图使用覆盖函数:didRotateFromInterfaceOrientation; 但是,这个函数是在旋转发生后调用的,我想在实际旋转期间制作动画。

我正在寻找一种在旋转时调用的方法。我浏览了文献,发现只有折旧的功能可能有效。

我可以使用任何当前的方法吗?

4

3 回答 3

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

斯威夫特 3.x

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    if UIDevice.current.orientation.isLandscape {
        print("Landscape")
    } else {
        print("Portrait")
    }
}
于 2015-12-26T00:40:42.130 回答
3

试试这个代码,

斯威夫特 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

    }
}
于 2017-05-03T16:49:40.850 回答
-1

我也可以使用这个:

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

在方向转换结束时,活动指示器停止动画,因为我在属性检查器中勾选了停止时隐藏选项,然后它消失了。

于 2015-12-26T04:40:43.680 回答