iphone - 仅第一个 UIView 添加的 View addSubview 显示正确的方向

标签 iphone cocoa-touch

我设置了三个 ViewController 来处理三个 View 。我遇到的问题是,在模拟器中,方向是 LandscapeRight (这就是我想要的),并且第一个 View 在该横向 View 中正确显示,但是当我移动到第二个和第三个 View 时,它们会显示逆时针旋转 90 度, View 的左上角位于手机屏幕的左下角。我已经尝试调试这个问题几天了,我得到的最接近的线索是通过以下方式跟踪它:

以下内容位于我的应用程序委托(delegate)的 applicationDidFinishLaunching 中:

NSLog(@"1");
[window addSubview:welcomeController.view];
NSLog(@"2");
[window addSubview:goalController.view];
NSLog(@"3");
[window addSubview:planningController.view];
NSLog(@"4");

[window bringSubviewToFront:welcomeController.view];
NSLog(@"5");

我的每个 ViewController 都实现类似于以下内容的内容(唯一的更改是在传递给 NSLog 的字符串中切换的 Controller 名称):

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
NSLog(@"called for WelcomeController");
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

这样,我在控制台上得到以下输出:

a
called for WelcomeController
called for WelcomeController
called for WelcomeController
called for WelcomeController
2
called for GoalController
3
called for PlanningController
4
5

我发现有趣的是,对于添加的第一个 View ,shouldAutorotateToInterfaceOrientation 被调用了 4 次,而其他两个 View 只被调用一次。我预计这可能是因为它首先必须进行一些设置(并且我相信模拟器以纵向模式启动,因此它可能在旋转时调用它),但我发现这种相关性有点可疑。

我已经改变了顺序,以便首先为 goalController 调用 addSubview,然后为welcomeController 调用。在本例中,目标 Controller 以正确的横向方向显示(通常是欢迎 Controller )。这似乎消除了我的 XIB 文件和 ViewController 本身。我不确定为什么调用 addSubview 的第一个 View 很特殊。我还尝试在索引 0 处使用 insertSubview ,得到相同的结果。

最佳答案

遇到了同样的问题,显然向 UIWindow 添加 subview 并没有按照我预期的方式工作。添加“虚拟”UIViewController(UIWindow 中唯一的 subview )后,我成功解决了该问题。添加该 View 后,可以完美地向虚拟 Controller 添加多个 subview ,所有 subview 都具有正确的方向。

因此,“虚拟” Controller 类中的唯一代码是“shouldAutorotateToInterfaceOrientation”函数。这也应该与所有其他 subview 中的相同功能匹配。

希望有帮助。

关于iphone - 仅第一个 UIView 添加的 View addSubview 显示正确的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1484799/

相关文章:

iphone - Objective-C 命名约定——澄清

iphone - 类似于 iPhone-sdk 的 rsync

iphone - View 加载后立即执行函数,iphone

objective-c - NSDateFormatter 在样式和格式之间交换

ios - 获取字符串的长度

iOS - 从另一个呈现的 View Controller 呈现 View Controller

iphone - iTunes 认为两个不同的应用程序是同一个

iphone - iOS 上的 Google Analytics SDK v2 中未报告的广告系列

ios - 如何模仿 UITableView 的 UITableViewStylePlain section header 样式

objective-c - 使用 NSXMLParser 从 HTTPS URL 解析 XML?