在IOS8之前旋转屏幕许多种方法,也有许多监听的事件,但是现在都不能使用所以另谋出入
强制竖屏
if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
SEL selector = NSSelectorFromString(@"setOrientation:");
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
[invocation setSelector:selector];
[invocation setTarget:[UIDevice currentDevice]];
int val = UIDeviceOrientationPortrait;
[invocation setArgument:&val atIndex:2];
[invocation invoke];
}
强制横屏
if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
SEL selector = NSSelectorFromString(@"setOrientation:");
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]]; [invocation setSelector:selector];
[invocation setTarget:[UIDevice currentDevice]];
int val = UIDeviceOrientationPortrait;
[invocation setArgument:&val atIndex:2];
[invocation invoke];
}
原来的方法不能直接调用,所以需要间接调用,亲自测试过,AppStore上可以审核通过
之后通过监听设备的方向来控制旋转.......................还有需要注意的是IOS7里面[UIScreen mainScreen]的高和宽值是不变的,所以在横屏时候宽是高,高是宽,使用时候需要判断一下,但是IOS8 [UIScreen mainScreen] 的高宽值是会变的,所以在IOS8上横屏的时候就不需要做任何判断直接使用宽高就可以
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(changeFrames:)
name:UIDeviceOrientationDidChangeNotification
object:nil];