UIWindow 的根视图控制器在应用程序启动时不会旋转到横向

2023-12-02

我正在开发一个基于 xib 的仅横向应用程序。该应用程序可以在横向模式下正确启动。然而,我的主 ViewController 中的视图是纵向呈现的。也就是说,它旋转 90 度,使图像看起来被裁剪并且不会占据整个屏幕。如果我使用我的界面来呈现模式视图控制器,然后返回到主 ViewController,问题会自行纠正(视图以横向方式呈现)。在Xcode 4.2下没有出现这个问题。它发生在升级到 Xcode 4.3 后,当我升级项目设置时,Xcode 会自动实现唯一的代码更改。

根据其他帖子中的建议,我验证了 Info.plist 支持的界面方向和初始界面方向的设置。我重写了每个视图控制器的 shouldAutorotateToInterfaceOrientation 方法,仅针对横向方向返回 YES。另外,我关闭了视图的自动调整大小,因为我不想改变视图的大小/方向。

根据此链接 [1] 中的想法,我怀疑问题是视图在启动时没有收到更改方向的调用,可能是由于删除了 MainWindow.xib 概念,该概念似乎被以下内容取代AppDelegate.m 中的 Xcode 插入代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    return YES;
}

我修改了这个方法来生成一个通用的根视图控制器,从中呈现我的 ViewController 类,如下面的代码所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    ViewController* myViewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.viewController = [[UIViewController alloc] init];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    [self.viewController presentModalViewController:myViewController animated:NO];
    return YES;
}

瞧!这解决了我的问题。然而,对我来说,这感觉像是一个根本性的改变,我不想在我的发展阶段做出这样的改变。我原本打算成为根视图控制器的现在是模态视图。有人对这个问题有其他解决方案吗?

提前致谢!


我也遇到了同样的问题:一个本来应该处于横向模式的应用程序假设 ViewController 始终处于纵向模式。我对项目和 info.plist 的各个方面进行了大量更改,包括为主 UIWindow 提供一个横向的根视图控制器。还是没用。我最终撤消了所有更改,只是将下面注明的两行添加到我的应用程序委托中:

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{
    [_window addSubview:[_viewController view]];
    glView = _viewController.glView;

    // THIS FIXED ORIENTATION FOR ME IN IOS 6
    _window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    // END

    ...my other setup code here...
}

没有其他必要了。

由于某种原因,在 iOS 6 中,UIWindow root-view-controller 设置有时会在 Interface Builder 中被忽略。我确信我的推理在某些地方是错误的,但我认为这很可能有助于促使某人找到更全面、更详尽的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIWindow 的根视图控制器在应用程序启动时不会旋转到横向 的相关文章

随机推荐

  • 有效地替换字符串中的所有重音字符?

    为了一个穷人的实施near 客户端的排序规则正确排序我需要一个 JavaScript 函数来实现高效的字符串中的单个字符替换 这就是我的意思 请注意 这适用于德语文本 其他语言的排序不同 native sorting gets it wro
  • Jstree:dblclick 绑定参数数据未定义

    我尝试使用好的库jstree但我有一些奇怪的问题dblclick捆绑 这是我的代码 basic html jstree themes url http mywork shinframework shinfw themes redmond c
  • 嵌套 INotifyPropertyChanged 类不起作用

    得到了一些代码 得到了意想不到的结果 如果我用 Myclass 替换嵌套类 那就没有问题了 我想念什么 我是否绑定文本 到其他控件 或绑定图像并不重要 xaml代码
  • Android:是否可以在屏幕上同时创建底部和顶部选项卡?

    我想知道是否可以在顶部和底部设置不同的选项卡 单击时会导致不同的活动 谷歌搜索但没有找到任何相关内容 Thanks Android 的好处是几乎所有你想做的事情都可以实现 如果我们要更改您的 XML 我们会将其更改为以下内容
  • 用于淡入和淡出视图的 Angular 4 动画

    我只是希望视图在路线更改时淡入和淡出 我似乎已经正确设置了组件 但我认为需要使动画语法正确 这是我目前的动画尝试 我将此动画导入到我的组件中 import trigger state animate style transition fro
  • 使用 PHP API 进行 FB.login

    我已经设置了一个 Canvas 页面 单击表单提交按钮即可实现 FB login 在以下请求期间 它尝试通过 facebook gt api me 来自 Github 的最新 API 版本 访问用户数据 它可以在 Firefox 和 Chr
  • 检测序列参数的正确方法?

    我想编写一个接受参数的函数 该参数可以是序列或单个值 value的类型有str int等 但是我don t希望将其限制为硬编码列表 换句话说 我想知道参数 X 是一个序列还是我必须转换为序列以避免以后出现特殊情况的东西 我可以 type X
  • 错误:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“int”[-Wformat=]

    我目前正在尝试做自己的 shell 它必须是多语言的 所以我尝试实现一个读取 txt 文件中的行的函数 include
  • 如何在反应材料表上添加精美的滚动条?

    我在用着反应材料表并想要一个像样的滚动条而不是默认的分页 我努力了反应自定义滚动但它没有按照我的意图工作 我的应用程序的默认滚动条已激活 还有一件事 我怎样才能将这种类型的滚动应用到桌体上 import CustomScroll from
  • Fragment 和 Anko toast 的“接收器类型不匹配”

    我正在尝试使用 Jetbrains 的 Anko 库在我的应用程序中轻松显示 Android toast 消息 这是相关的代码片段 val message CharSequence Recycled holder taskEditText
  • 从 IntentService 向 Activity 发送消息

    我在同一个应用程序中有一个活动和一个intentService 该服务必须在活动结束后继续运行 因此我不想绑定 我已经在谷歌上搜索了几个小时 但找不到一个关于如何做到这一点的好例子 我可以启动该服务并向其传递额外内容 但现在该服务必须使用
  • iPad 上的 iAd:横向 iAd 方向不正确

    这仍然是一个相对较新的主题 因此不确定有多少人必须在 iPad iOS4 2 1 上实现 iAd 但基本上 我让 iAd 横幅以横向模式显示 并且显示正确 唯一的问题是 当我单击 测试广告 时 它会以纵向模式显示测试广告 即 设备仍处于横向
  • 有没有办法使用 Video.js 从视频标签获取当前字幕的文本?

    我想在播放视频期间获取当前字幕的文本 并且实现自己的字幕块 即隐藏原始字幕 并以几种不同的方式使用该信息 目前我使用videojs为我的球员 有什么方法可以从中获取当前标题的字符串吗 此代码获取当前提示并放入 span element fu
  • R curl::has_internet() FALSE 即使有互联网连接

    使用 R 包 Eurostat 从 EuroSTAT 下载数据时出现了问题 Population data by NUTS3 pop data lt subset eurostat get eurostat demo r pjangrp3
  • 为什么Android C2DM推送消息总是不到达?

    我已经构建了一个功能正常的 C2DM 应用程序 通常它运行得很好 并且推送消息到达得很快 然而 我发现当我第一次启动应用程序或将其重新聚焦时 消息经常不会到达 它们肯定发送成功 我收到 200 响应 并且消息格式肯定是正确的 稍后发送相同的
  • C 中的 size_t 是什么?

    我很困惑size t在 C 中 我知道它是由sizeof操作员 但它到底是什么 它是一种数据类型吗 假设我有一个for loop for i 0 i lt some size i 我应该使用int i or size t i 来自维基百科
  • 如何让自动对焦在第二个 AVCaptureSession 中工作而不重新创建会话?

    当我创建第二个 AVCaptureSession 时 自动对焦不适用于第一个 AVCaptureSession 要创建的第二个会话是自动对焦工作的会话 而第一个创建的会话则不自动对焦 我希望任一会话在另一个会话停止后启动时都能够自动对焦 就
  • 如何比较两个捕获的声音,看看哪一个声音更大?

    给定从麦克风捕获的两个字节数组的数据 我如何确定哪一个有更多的噪声尖峰 我假设有一种算法可以应用于数据 但我不知道从哪里开始 说实话 我需要能够确定婴儿何时哭泣以及房间内的环境噪音 如果有帮助 我正在使用 Microsoft Xna Fra
  • 无法实例化子目录中定义的类

    我的 简化的 项目布局如下 init py test py lib init py lib client py my test py简单来说就是 import lib client A client A Test and my lib cl
  • UIWindow 的根视图控制器在应用程序启动时不会旋转到横向

    我正在开发一个基于 xib 的仅横向应用程序 该应用程序可以在横向模式下正确启动 然而 我的主 ViewController 中的视图是纵向呈现的 也就是说 它旋转 90 度 使图像看起来被裁剪并且不会占据整个屏幕 如果我使用我的界面来呈现