我正在尝试。在旋转设备时启动UIActivityIndicator,我试图使用覆盖功能:didRotateFromInterfaceOrientation;但是,在旋转发生后调用此函数,我想在实际旋转期间进行动画处理。
我正在寻找一种在旋转时调用的方法。我查看了文献,并且发现了可能有用的折旧函数。
我目前可以使用哪种方法吗?
答案 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()
}
基本上,它允许在旋转期间使用视图。就我而言,当检测到旋转时,我的UIActivityIndicator开始动画。然后是这段代码:
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
print("Rotation did occur.")
// my code entries.
// my code entries..
// my code entries...
self.activityIndicator.stopAnimating()
}
在方向转换结束时,活动指示器停止动画,并且由于我在“属性”检查器中勾选了“停止时隐藏”选项,它随后会消失。