gpt4 book ai didi

ios - 在 UINavigationViewController 上推送(推送 segue) View 后方向不会改变

转载 作者:可可西里 更新时间:2023-11-01 05:54:06 25 4
gpt4 key购买 nike

我在 UINavigationController 中嵌入了一个 UIViewController。此 Controller 的 View 方向设置为纵向。当我在此 UIViewController 上推送一个新 View 时,它只是横向的,新 View 也显示为纵向,而不是方向横向。

我尝试继承 UINavigationController 并添加如下方法:

- (BOOL)shouldAutorotate {
return self.topViewController.shouldAutorotate;
}

- (NSUInteger)supportedInterfaceOrientations {
return self.topViewController.supportedInterfaceOrientations;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return self.topViewController.preferredInterfaceOrientationForPresentation;
}

在 rootViewController (LoginViewController) 中,我这样做了:

- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}

- (BOOL)shouldAutorotate
{
return YES;
}

在 pushViewController(自定义 ViewController)中,我这样做了:

- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}

-(BOOL)shouldAutorotate {
return YES;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeLeft;
}

我在它们之间使用 Storyboard和推送转场。我知道问题出在推 segue 上,这导致接管了纵向的 topviewcontroller 的方向,而 pushViewController 是横向的。有人知道解决方法吗?

非常感谢任何帮助。否则我应该放弃 navVC 并执行模态转场。

韩国

最佳答案

试试这段代码:

在 AppDelegate.m 类中编写以下代码。

#pragma mark Orientation Code
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
NSUInteger orientations = UIInterfaceOrientationMaskAll;

if (self.window.rootViewController) {
UIViewController* presented = [[(UINavigationController *)self.window.rootViewController viewControllers] lastObject];
orientations = [presented supportedInterfaceOrientations];
}
return orientations;
}

接下来,如果您不想要特定类的方向,例如

停止定向viewController.m

#pragma mark Orientation
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}

- (BOOL)shouldAutorotate
{
return NO;
}

更改项目 Target 的项目设备方向的最后一件事。

例如:项目目标 --> 设备方向 --> 选择全部(纵向、上下颠倒、横向左侧、横向右侧)

关于ios - 在 UINavigationViewController 上推送(推送 segue) View 后方向不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23630942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com