当应用程序处于横向模式(我计划强制)时,显示模态视图会导致父视图旋转到纵向模式。如果我将shouldAutoRotateToInterfaceOrientation的返回值设置为NO,则父项不会旋转,但是模态然后从侧面滑入并侧向显示。下面是显示模态的代码。
- (IBAction)loadExistingGame:(id)sender {
SavedGamesTableViewController *savedGames = [[SavedGamesTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
savedGames.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:savedGames animated:YES];
[savedGames release];
}
根据请求,这里是SavedGamesTableViewController的shouldAutoRotate方法的内容
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Override to allow orientations other than the default portrait orientation.
return YES;
}
答案 0 :(得分:2)
好的,我想出了解决它需要做些什么。包含可能方向列表的plist文件需要限制为单个横向视图。只有当方向与plist文件中的唯一方向匹配时,模态表视图的父级才需要使shouldAutoRotateToInterfaceOrientation方法返回YES。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Overriden to allow any orientation.
return interfaceOrientation = UIInterfaceOrientationLandscapeRight;
}
模态viewcontroller应该为同一方法返回NO。
答案 1 :(得分:0)
基于
当应用程序处于横向状态时 模式(我计划强行), 显示模态视图会导致 父视图旋转到纵向 模式。
和
根据要求,这里的内容是 的shouldAutoRotate方法 SavedGamesTableViewController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Override to allow orientations other than the default portrait orientation.
return YES;
}
所以您所说的是父视图控制器尚未设置为仅使用横向方向强制显示,并且当您显示设置为允许所有方向的模式视图时,您会想知道父视图旋转的原因将设备旋转为纵向时画像?我不明白你的问题...你不是说父视图控制器当前设置为允许旋转到肖像吗?这种行为究竟应该发生什么?
答案 2 :(得分:0)
在提出模态邮件视图时遇到了类似的问题。强制旋转对我来说不起作用,但是在应用程序的主视图控制器而不是子视图控制器上调用presentModalViewController解决了这个问题。
答案 3 :(得分:0)
我看到了同样的行为;在我的情况下问题是我已经实现了shouldAutorotateToInterfaceOrientation无条件地为父视图控制器返回YES但不是为呈现的模态视图控制器。所以我怀疑Shaggy Frog的评论是关键:你是否想要强制横向模式,你需要确保两个视图控制器'shouldAutorotateToInterfaceOrientation实现同意或者随之而来的怪异。
答案 4 :(得分:0)
UIViewController *vc = /* create view controller */;
UINavigationController *nc = nil;
if (IOS_VERSION_LESS_THAN_6_0) {
nc = [[MyCustomNavigationControllerSupportingAllOrientations alloc] initWithRootViewController:vc];
} else {
nc = [[UINavigationController alloc] initWithRootViewController:vc];
}
[self.navigationController presentModalViewController:nc animated:YES];
在iOS6上我使用UINavigationController。
在iOS6之前,我将UINavigationController子类化,如下所示:
@interface MyCustomNavigationControllerSupportingAllOrientations : UINavigationController
@end
@implementation MyCustomNavigationControllerSupportingAllOrientations
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
@end