iOS 在 Swift 中,图像帧的动画在设备方向上没有获得正确的坐标
iOS Animation of image frame not getting right coordinates on Device orientation in Swift
我需要在 UIViewController
出现时创建动画(从左上角 10 到屏幕中间)。
我为此使用了 CGRect
帧,但是当我在加载视图后旋转屏幕时,动画视图失败,因为动画完成后视图需要居中对齐。
我也尝试过使用自动布局,但它并不能使 UIImageView
每次都具有动画效果。
这是我目前使用的代码。
override func viewDidLoad() {
super.viewDidLoad()
imgView.frame = CGRect(x: 10, y: 10, width: 80, height: 80)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
UIView.animate(withDuration: 2.0, animations: {
self.imgView.frame = CGRect(x: (self.view.frame.width / 2) - 40, y: (self.view.frame.height / 2) - 40, width: 80, height: 80)
}) { (success) in
}
}
要在方向更改期间获得正确的 self.view.frame.width
大小,您应该覆盖 viewWillTransition(..)
方法:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
// here you have the right size.width
}
我需要在 UIViewController
出现时创建动画(从左上角 10 到屏幕中间)。
我为此使用了 CGRect
帧,但是当我在加载视图后旋转屏幕时,动画视图失败,因为动画完成后视图需要居中对齐。
我也尝试过使用自动布局,但它并不能使 UIImageView
每次都具有动画效果。
这是我目前使用的代码。
override func viewDidLoad() {
super.viewDidLoad()
imgView.frame = CGRect(x: 10, y: 10, width: 80, height: 80)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
UIView.animate(withDuration: 2.0, animations: {
self.imgView.frame = CGRect(x: (self.view.frame.width / 2) - 40, y: (self.view.frame.height / 2) - 40, width: 80, height: 80)
}) { (success) in
}
}
要在方向更改期间获得正确的 self.view.frame.width
大小,您应该覆盖 viewWillTransition(..)
方法:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
// here you have the right size.width
}