在iOS8之前,我们可以通过willRotateToInterfaceOrientation:duration:
方法来获取设备旋转前后的界面方向,并根据旋转后的方向来更新视图的中心位置。但是在iOS8及以后的版本中,苹果推出了新的界面旋转机制,即viewWillTransitionToSize:withTransitionCoordinator:
方法。
在这个方法中,我们可以通过withTransitionCoordinator
参数获取到一个UIViewControllerAnimatedTransitioning
对象,该对象可以帮助我们处理界面旋转的动画过渡效果。而且,我们还可以通过size
参数获取到旋转后的界面尺寸。
因此,要在iOS8及以后的版本中获取更新的UIView的中心位置,可以按照以下步骤进行操作:
viewWillTransitionToSize:withTransitionCoordinator:
方法。withTransitionCoordinator
参数获取到旋转过渡的动画协调器对象。animateAlongsideTransition:completion:
方法中,执行更新中心位置的操作。size
参数获取到旋转后的界面尺寸,并根据需要计算出新的中心位置。以下是一个示例代码:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
coordinator.animate(alongsideTransition: { (context) in
// 在这里执行更新中心位置的操作
let newCenter = CGPoint(x: size.width / 2, y: size.height / 2)
self.view.center = newCenter
}, completion: nil)
}
这样,当设备旋转时,视图的中心位置就会自动更新到旋转后的位置。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云