项目中开启横竖屏
- 自定义一个 UINavigationController ,并实现以上几个方法
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
UIViewController *vc = self.topViewController;
if([vc isKindOfClass:[RemoteController class]]){//要横屏的界面
return (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
- (BOOL)shouldAutorotate
{
UIViewController *vc = self.topViewController;
if([vc isKindOfClass:[RemoteController class]]){//要横屏的界面
return YES;
}
//横屏的上一个界面,要返回为YES,否则横屏返回的时候上一界面不能还原成竖屏
if([vc isKindOfClass:[ConnectHome class]]){
return YES;
}
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
UIViewController *vc = self.topViewController;
if([vc isKindOfClass:[RemoteController class]]){//要横屏的界面
return UIInterfaceOrientationMaskLandscapeRight;
}
return UIInterfaceOrientationMaskPortrait;
}
//进入界面时强制横屏
- (void)viewWillAppear:(BOOL)animated
{
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];
}
}
//退出界面时强制竖屏
- (void)viewWillDisappear:(BOOL)animated
{
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];
}
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。