我想提出一个iOS应用程序,需要在旋转时做一些界面重排。 我试图通过实施检测到这种- (void)orientationChanged:(NSNotification *)note
,但是这让我对当设备朝上或朝下的通知。
我希望在接口改变方向,只是得到通知的方式。
我想提出一个iOS应用程序,需要在旋转时做一些界面重排。 我试图通过实施检测到这种- (void)orientationChanged:(NSNotification *)note
,但是这让我对当设备朝上或朝下的通知。
我希望在接口改变方向,只是得到通知的方式。
由于iOS 8的,上述方法被弃用,以处理和检测装置的旋转的适当方法是:
- (无效)viewWillTransitionToSize:(CGSize)大小withTransitionCoordinator:(ID)协调器;
要,你应该(根据文档)检测设备方向: 调用statusBarOrientation方法来确定设备的方向
有几种方法,你可以做到这一点,你可以在其中找到UIViewController类参考 :
– willRotateToInterfaceOrientation:duration:
– willAnimateRotationToInterfaceOrientation:duration:
– didRotateFromInterfaceOrientation:
你也可以做到这一点的viewWillLayoutSubviews
方法,但要小心,因为它被称为在屏幕上亮相过了,只要你添加一个子视图。
编辑:
解决方案现在已经过时,见接受的答案。
斯威夫特3:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
}
由于iOS 8的这是做了正确的道路。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
coordinator.animate(alongsideTransition: { context in
// This is called during the animation
}, completion: { context in
// This is called after the rotation is finished. Equal to deprecated `didRotate`
})
}