在我的App中,我使用了UITabbarController,它可以完美地旋转到所有viewcontrollers中的所有UIInterfaceOrientations。但是当我向UIWindow添加UIView后,它将不会添加到当前的UIInterfaceOrientation中,而是始终在UInterfaceOrientationPortrait中(这是应用程序的默认设置)。它也不会旋转到新的方向。我使用:
添加ViewControllerLoginViewController *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视图。
答案 0 :(得分:1)
我在另一个视图中有一个视图,当轮换发生时,只调用了父willRotateToInterfaceOrientation
,所以我所做的就是将[self.subViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
添加到父willRotateToInterfaceOrientation
方法。
答案 1 :(得分:0)
当您向窗口添加新的子视图时,您必须使窗口也旋转。