我有一个没有使用自动布局的UIView,并且根据主视图中X和Y坐标的百分比显示了一些组件。
以前我会运行一个函数来更新他们在didRotateFromInterfaceOrientation中的位置,但是我发现这在iOS8中已被弃用。
我看过viewWillTransitionToSize,但它给出了奇怪的结果,并且似乎没有viewDidtransitionToSize函数。
设备轮换后是否有一种简单的方法(在Swift中)运行函数?
答案 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
}
}