iOS 强制转成横屏的方式

一直遇到这个问题,今天终于找到了解决方法.

在我们的项目中经常遇到横竖屏切换,而又有某个特定的界面必须是特定的显示方式(横屏或竖屏).这就需要如下的处理了.

强制转成横屏: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 = UIInterfaceOrientationLandscapeRight;[invocation setArgument:&val atIndex:2];[invocation invoke];}方法二: 通过判断状态栏来设置视图的transform属性。- (void)deviceOrientationDidChange: (NSNotification *)notification{UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];CGFloat startRotation = [[self valueForKeyPath:@"layer.transform.rotation.z"] floatValue];CGAffineTransform rotation;switch (interfaceOrientation) {case UIInterfaceOrientationLandscapeLeft:rotation = CGAffineTransformMakeRotation(-startRotation + M_PI * 270.0 / 180.0);break;case UIInterfaceOrientationLandscapeRight:rotation = CGAffineTransformMakeRotation(-startRotation + M_PI * 90.0 / 180.0);break;case UIInterfaceOrientationPortraitUpsideDown:rotation = CGAffineTransformMakeRotation(-startRotation + M_PI * 180.0 / 180.0);break;default:rotation = CGAffineTransformMakeRotation(-startRotation + 0.0);break;}view.transform = rotation;}说明一下:如果实现了下边的两个方法,你的应用程序在初始化的时候有多少个controller就会走多少次下边两个方法。showldAutorotate这个方法是再你即将旋转屏幕的时候,就会再次调用,只要在这里判断好YES或者NO就好了。在你需要的时候通过shouldAutorot这个变量打开,不需要的时候关闭就可以了。有什么不明白的,可以加入上边的QQ群,里边问我。-(BOOL)shouldAutorotate //是否支持旋转,如果为NO,则下边的方法就不会调用,,如果为YES,才会调用{if (!shouldAutorot) {return NO;}else{return YES;}}-(NSUInteger)supportedInterfaceOrientations{return UIInterfaceOrientationMaskAllButUpsideDown;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

不敢面对自己的不完美,总是担心自己的失败,

iOS 强制转成横屏的方式

相关文章:

你感兴趣的文章:

标签云: