gpt4 book ai didi

objective-c - 真的卡在屏幕旋转 iOS 6 上,我需要一个锁定到纵向的 xib

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:49 25 4
gpt4 key购买 nike

在这里阅读了在 IOS 6 中处理屏幕旋转的所有方法、Apple 文档和激烈的谷歌搜索,在使用 xibs 时我仍然停留在这个问题上。

我想要实现的是只有几个 iPad 的 xibs,只有横向,其余的应用程序是纵向的。

如果我使用的是 Storyboard ,我知道如何子类化导航 Controller 以覆盖旋转,但我不是,我正在使用 xibs 并且会很感激任何输入如何与 xibs 一起工作

在我的应用委托(delegate)中:

ICHomeController *homeController = [[ICHomeController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:homeController];
navController.navigationBarHidden = YES;
navController.navigationBar.barStyle = UIBarStyleBlackOpaque;
navController.navigationBar.tintColor = [UIColor grayColor];
self.navigationController = navController;
[self.window setRootViewController:self.navigationController];
[self.window makeKeyAndVisible];
return YES;

除了尝试这里的所有解决方案外,我还在我的 View Controller 中尝试了显而易见的解决方案,但据我所知,在 iOS 6 中它不会被调用。

// Older versions of iOS (deprecated)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}


- (BOOL)shouldAutorotate {
return YES;
}


- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}


- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeLeft;
}

最佳答案

几天来我也一直在与更复杂的导航结构作斗争。

基本规则似乎是 ROOT Controller ,无论是 UINavigationController、UITabBarController 还是简单的 UIViewController,都控制旋转。因此,当您将 UIViewControllers 插入堆栈时,第一个仍然控制着旋转。

如果你使用模态视图,那么这个模型 View 将被认为是堆栈的根,直到它被关闭。因此,如果您显示模态 UIViewController 然后将 View 推到它上面,则作为模态视图呈现的 UIViewController 将控制旋转。只需确保模态视图使用 presentViewController:animated:completion。

让某些 View 处于不同旋转状态的最简单方法是以模态方式呈现它。如果无法避免这种情况,请立即返回到您的第一个 View 或 nag Controller 并设置旋转。

将一些 NSLog(@"%s", __FUNCTION__);​​ 语句添加到您的旋转方法中,以查看正在调用哪些方法。

在您上面的代码中,只有第一种方法是旧的 iOS5(现已弃用)方法。其他 3 个是新的 iOS 6 方法。

使用上面的示例代码,您需要子类化 UINavigationController。为此,创建一个新类作为具有不同名称的 UINavigationController 子类,例如。 MyNavigationController 并向其添加旋转方法。然后在上面的代码中而不是使用UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:homeController];

你会使用:

MyNavigationController *navController = [[MyNavigationController alloc] initWithRootViewController:homeController];

此外,请确保您已允许在此处选择方向: enter image description here

关于objective-c - 真的卡在屏幕旋转 iOS 6 上,我需要一个锁定到纵向的 xib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14012982/

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