iOS:如何在设备旋转后运行功能(Swift)

时间:2014-11-15 07:53:59

标签: ios swift rotation

我有一个没有使用自动布局的UIView,并且根据主视图中X和Y坐标的百分比显示了一些组件。

以前我会运行一个函数来更新他们在didRotateFromInterfaceOrientation中的位置,但是我发现这在iOS8中已被弃用。

我看过viewWillTransitionToSize,但它给出了奇怪的结果,并且似乎没有viewDidtransitionToSize函数。

设备轮换后是否有一种简单的方法(在Swift中)运行函数?

2 个答案:

答案 0 :(得分:134)

使用符合viewWillTransitionToSize的对象调用UIViewControllerTransitionCoordinator委托方法。协议声明的方法是animateAlongsideTransition(_:animation, completion:)。您可以使用它在转换完成后执行代码。

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
    coordinator.animateAlongsideTransition(nil, completion: {
        _ in

        // Your code here
    })
}

答案 1 :(得分:24)

上面的回答documentation here是完全正确的,感谢Acey和Moonwalkr。但对于swift 3.0,它将如下所示

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    coordinator.animate(alongsideTransition: nil) { _ in
        // Your code here
    }
}