子视图中的UIInterfaceOrientation旋转不起作用

时间:2011-08-02 07:38:40

标签: iphone objective-c subview uiinterfaceorientation uiwindow

在我的App中,我使用了UITabbarController,它可以完美地旋转到所有viewcontrollers中的所有UIInterfaceOrientations。但是当我向UIWindow添加UIView后,它将不会添加到当前的UIInterfaceOrientation中,而是始终在UInterfaceOrientationPortrait中(这是应用程序的默认设置)。它也不会旋转到新的方向。我使用:

添加ViewController
LoginViewController *loginViewController = [[LoginViewController alloc] init];
[self.window addSubview:[loginViewController view]];

我有

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    NSLog(@"%@", @"YES IT WILL!");
}
在LoginViewController.m中

但永远不会记录任何内容。知道为什么子视图不会旋转吗?

侧击

编辑: 找到解决方案: 显然UIWindow应该只有一个子视图,而不是更多,否则事情会搞砸,所以我打电话:

LoginViewController *loginViewController = [[LoginViewController alloc] init];
[tabBarController presentModalViewController:loginViewController animated:YES];

相反,这将自动旋转loginviewcontrollers视图。

2 个答案:

答案 0 :(得分:1)

我在另一个视图中有一个视图,当轮换发生时,只调用了父willRotateToInterfaceOrientation,所以我所做的就是将[self.subViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];添加到父willRotateToInterfaceOrientation方法。

答案 1 :(得分:0)

当您向窗口添加新的子视图时,您必须使窗口也旋转。