如何强制我的一个视图控制器在iOS中全屏显示?我的应用程序处于纵向模式,但我希望其中只有一个视图是横向和全屏。
我尝试了这个solution,其中包括使用以下方法实现CustomUINavigationController,并在我想要旋转的viewcontroller中添加shouldAutorotate方法:
//自定义UINAvigationController
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationLandscapeRight;
}
- (BOOL)shouldAutorotate{
return YES;
}
// UIViewController我想自动旋转
- (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
}
我猜我的问题与视图的herachy有关。如果我的ViewController是我的初始视图控制器但不包含所有视图,则它可以工作。我有一个自定义菜单和占位符(视图),我显示所有其他视图。我想成为横向和全屏的viewcontroller来自于占位符内部的视图,也许这是问题,但我现在不知道如何解决它。
答案 0 :(得分:0)
因此,当调用viewController呈现为self时,以下方法将调用:
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationLandscapeRight;
}
- (BOOL)shouldAutorotate{
return YES;
}
正如你所看到的那样,通过放置它们我强迫UIViewContoller显示LandscapeRight。
重要的不是! :如果你使用UINavigation控制器,你需要创建一些“主”导航控制器子视图,并在那里调用这些方法。
希望这有帮助!
答案 1 :(得分:0)
您可以使用我的LNWindowManager
在另一个窗口中以模态方式显示视图控制器。
https://github.com/LeoNatan/LNWindowManager
它向模态视图控制器演示文稿公开了类似的API,但扩展到了Windows:
- (IBAction)displayButtonTapped:(UIButton *)sender
{
UINavigationController* nvc = [self.storyboard instantiateViewControllerWithIdentifier:@"__presentationNVC"];
nvc.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissWindow:)];
UIWindow* window = [LNWindowManager templateWindowForName:@"example"];
window.rootViewController = nvc;
[[LNWindowManager sharedWindowManager].topWindow presentWindow:window animated:YES completion:nil];
}
- (void)dismissWindow:(UIBarButtonItem*)barButtonItem
{
[[LNWindowManager sharedWindowManager].topWindow.presentingWindow dismissWindow:[LNWindowManager sharedWindowManager].topWindow animated:YES completion:nil];
}
然后,您可以使用AppDelegate方法确定每个窗口的方向:
– application:supportedInterfaceOrientationsForWindow: