当我旋转设备时,我正在尝试 .StartAnimating UIActivityIndicator,我试图使用覆盖函数:didRotateFromInterfaceOrientation; 但是,这个函数是在旋转发生后调用的,我想在实际旋转期间制作动画。
我正在寻找一种在旋转时调用的方法。我浏览了文献,发现只有折旧的功能可能有效。
我可以使用任何当前的方法吗?
当我旋转设备时,我正在尝试 .StartAnimating UIActivityIndicator,我试图使用覆盖函数:didRotateFromInterfaceOrientation; 但是,这个函数是在旋转发生后调用的,我想在实际旋转期间制作动画。
我正在寻找一种在旋转时调用的方法。我浏览了文献,发现只有折旧的功能可能有效。
我可以使用任何当前的方法吗?
只需使用此代码段检查
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")
}
}
试试这个代码,
斯威夫特 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
}
}
我也可以使用这个:
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()
}
在方向转换结束时,活动指示器停止动画,因为我在属性检查器中勾选了停止时隐藏选项,然后它消失了。