我想在用户将屏幕旋转为横向或纵向时收到通知,有可能吗?
我找到了几篇文章,但我没有找到答案。
如果您想在设备旋转时收到通知,您可以shouldAutorotateToInterfaceOrientation:
在视图控制器中实现该方法,也可以注册以接收UIDeviceOrientationDidChangeNotification
.
在我们开始之前,设备方向和界面方向可以不同。设备可能是横向的,但界面可能保持纵向,具体取决于应用程序的编写方式。在更改界面方向以匹配设备方向之前不久发送设备通知。如果您不想改变界面方向,您应该shouldAutorotateToInterfaceOrientation:
在视图控制器中实现该方法以返回NO
。这将停止更新界面方向。
从您的问题来看,您似乎想收到通知,所以我认为您想使用第二种方法。您可以UIDeviceOrientationChangeNotification
使用以下方法启用 s:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
有对应的:
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
您可以注册以正常方式接收通知,使用NSNotificationCenter
和注册接收UIDeviceOrientationDidChangeNotification
:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
最后,您将实现在收到通知时调用的方法,如下所示:
- (void)orientationChanged:(NSNotication *)notification {
UIDeviceOrientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationPortrait ||
orientation == UIDeviceOrientationPortraitUpsideDown) {
// Portrait
} else {
// Landscape
}
}
如您所见,可以使用 的 orientation
实例方法访问方向UIDevice
。
shouldAutorotateToInterfaceOrientation
您需要在方法中以横向添加本地通知
试试这样:
if(interfaceOrientation == UIInterfaceOrientationLandscapeRight || UIInterfaceOrientationLandscapeLeft)
{
here schedule your local notification
}