手动设置竖屏:修改currentDevice orientation需要在setStatusBarOrientation前
bool IsIOS8 = NO;
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (version >= 8.0)
{
IsIOS8 = YES;
}
//改设备方向
//if (IsIOS8) {
[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIInterfaceOrientationPortrait] forKey:@"orientation"];
//}
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
UIApplication需要实现方法或者监听UIApplicaionDelegate委托回调
方法 1)UIApplication需要实现
-(NSUInteger)supportedInterfaceOrientations {
UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation];
UIInterfaceOrientation statusBarOrientation =[UIApplication sharedApplication].statusBarOrientation;
if(deviceOrientation == UIDeviceOrientationPortrait || deviceOrientation == UIDeviceOrientationPortraitUpsideDown){
if(statusBarOrientation != UIInterfaceOrientationPortrait ||statusBarOrientation != UIInterfaceOrientationPortraitUpsideDown){
return 0;
}
}
// otherwise
return UIInterfaceOrientationMaskLandscape;
}
方法 2)UIApplicaionDelegate委托接口
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation];
UIInterfaceOrientation statusBarOrientation =[UIApplication sharedApplication].statusBarOrientation;
if(deviceOrientation == UIDeviceOrientationPortrait || deviceOrientation == UIDeviceOrientationPortraitUpsideDown){
if(statusBarOrientation != UIInterfaceOrientationPortrait ||statusBarOrientation != UIInterfaceOrientationPortraitUpsideDown){
return 0;
}
}
// otherwise
return UIInterfaceOrientationMaskLandscape;
// UIInterfaceOrientationMaskAll
// it is the safest way of doing it:
// - GameCenter and some other services might have portrait-only variant
// and will throw exception if portrait is not supported here
// - When you change allowed orientations if you end up forbidding current one
// exception will be thrown
// Anyway this is intersected with values provided from UIViewController, so we are good
//return (1 << UIInterfaceOrientationPortrait) | (1 << UIInterfaceOrientationPortraitUpsideDown)
//| (1 << UIInterfaceOrientationLandscapeRight) | (1 << UIInterfaceOrientationLandscapeLeft);
}