Und*_*ndo 15 interface nsnotificationcenter screen-rotation ios auto-rotation
我正在制作一个iOS应用程序,需要在旋转时进行一些界面重新排列.我试图通过实现检测到这一点- (void)orientationChanged:(NSNotification *)note,但这会给我通知设备面朝上或面朝下的时间.
我想要一种方法来在界面改变方向时得到通知.
Lev*_*evi 27
有几种方法可以做到,你可以在UIViewController类引用中找到它们:
– willRotateToInterfaceOrientation:duration:
– willAnimateRotationToInterfaceOrientation:duration:
– didRotateFromInterfaceOrientation:
Run Code Online (Sandbox Code Playgroud)
您也可以在viewWillLayoutSubviews方法中执行此操作,但要小心,因为它也会在屏幕外观上调用,并且每当您添加子视图时.
编辑:
解决方案现已弃用,请参阅已接受的答案
小智 20
从iOS 8开始,上述方法已被弃用,处理和检测设备轮换的正确方法是:
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator;
要检测设备方向,您应该(根据文档):调用statusBarOrientation方法来确定设备方向
斯威夫特3:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
}
Run Code Online (Sandbox Code Playgroud)
从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`
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22372 次 |
| 最近记录: |