对我来说有 2 个选项,一个正确的方式(查看动画转换)和一个 hacky 的方式(通过模态呈现控制器来弄脏)。
首先,你可以展示你的模态视图控制器,如你所知,模态视图控制器会占据屏幕并且是唯一可访问的控制器,但你可以调整它的大小,使其最终呈现在仅屏幕的细节部分,这里的问题是它不打算调整大小和放错位置,而且在发生旋转时很容易遇到问题。此外,当此控制器存在时,您将无法与 UISplitViewController 的主控部分进行交互。
这可以像这样完成,例如:
UIViewController *detail = [[UIViewController alloc] init];
detail.modalPresentationStyle = UIModalPresentationFormSheet;
detail.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
if([self respondsToSelector:@selector(presentViewController:animated:completion:)]){
[self presentViewController:detail animated:YES completion:nil];
}else{
[self presentModalViewController:detail animated:YES];
}
detail.view.superview.frame = CGRectMake(320.0, 0.0, self.view.frame.size.width - 320.0, self.view.frame.size.height);
[detail release];
您可能需要调整细节视图控制器视图的超级视图的中心...我不建议这样做。
您的另一个解决方案是在细节视图控制器中使用UIView 动画来交换您的视图和动画以翻转。
要查看它的外观,请查看 iOS 版 Facebook 应用,在聊天中,当您进行对话时,您可以点击右上角的 [...] 按钮,然后视图的内容会翻转,您可以调整该人/聊天的通知设置。
例如,当您点击详细视图控制器中的按钮时,您可以执行以下操作:
UIViewController *someOtherController = [...];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
forView:self.view
cache:YES];
[self.view addSubview:someOtherController.view];
[UIView commitAnimations];
你可以做相反的事情来删除它。