2010-09-15 71 views
0

我有一个视图控制器管理视图。UIView子视图不改变方向

我将我的视图控制器子类添加为交换另一个视图的窗口的子视图。

我在iPad上运行横向模式。

该视图显然不知道它在横向模式下。它的框架很混乱。

有什么我可以/应该做的,以告诉它它的景观,和/或方向已经改变。这通常如何发生。为什么不发生?

我曾经有我的视图控制器在UITabBarController内,它在那里工作得很好。

回答

0

覆盖:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    return YES; 
} 
+0

那已经在那里了。这不是问题。 – David 2010-09-15 22:24:04

0

您的视图控制器是没有得到旋转事件,因为你已经没有出现的viewController,但添加了的viewController的视图层次视图。

您的选项卡栏控制器以前用于负责将旋转事件转发给它管理的视图控制器,这是它用来工作的方式。

我虽然建议交换窗口视图是一个坏主意。相反,你应该有一个主视图控制器,它接受旋转事件,然后根据当前方向在此视图控制器内交换视图。在进一步编码之前考虑重新设计。

+0

你是否建议有我自己的根视图控制器和交换子视图?其中一种观点是UISplitView,它似乎并不喜欢这样。但也许我没有说足够的话,或者转发了足够多的事件。是否有切换视图的最佳方式的示例? – David 2010-09-15 22:22:43

+0

如果你使用的是splitViewController,恐怕分割视图控制器应该总是一个主视图控制器。旋转事件不需要被明确地传递。这些消息是并且应该在内部发送。旋转之后交换视图并不令人满意。旋转发生时,UI会突然切换。发生旋转时,视图应使用正确的自动调整掩码设置进行调整。但是,如果你有这样的要求,你可以继续我的建议+,前提是你不会将视图拆分为子视图,因为它会获得轮换事件。 – 2010-09-17 06:46:52

0

我的问题是,我的故事板覆盖了我现有的自定义编码的应用程序委托。在我删除了故事板文件和自定义生成的视图控制器代码之后,它对我有用。