可能很多人都被这样的问题困扰着,我也一样,被困扰了好久,如何应用程序刚启动时判断设备方向呢?很多人自己没有测试过,就说可以根据状态栏的标记,可以根据当前设备方向,还有那几个旋转函数等等。。。 这些都是在rootViewController之后去判断的,但是,在程序刚刚启动时做这些判断都是无效的。今天终于发现了一个办法,可以用通知,具体是这样的,在didFinishLaunchingWithOptions函数中:
//注册通知
UIDevice *device = [UIDevice currentDevice];
[device beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenterdefaultCenter] addObserver: self
selector: @selector(deviceOrientationDidChangeAction:)
name: UIDeviceOrientationDidChangeNotification
object: nil];
[device endGeneratingDeviceOrientationNotifications];
//转屏处理函数:
- (void) deviceOrientationDidChangeAction:(NSNotification *)note
{
NSInteger currentOrientation = [[note object] orientation];
switch (currentOrientation) {
case0: { //未知方向
break;
}
case1: { //home键向下
break;
}
case2: { //home键向上
break;
}
case3: { //home键向左
break;
}
case4: { //home键向右
break;
}
default:
break;
}
}
记得还要在恰当的时候移除通知 不然会被反复调用:
[[NSNotificationCenterdefaultCenter]
removeObserver:self
name:UIDeviceOrientationDidChangeNotification
object:nil];