我一直在尝试添加视图容器,从侧面留出20px空间。但这似乎不是正确的做法......
// ADD CHILD VIEW CONTROLLER
[parentViewController addChildViewController:childViewController];
[parentViewController.view addSubview:childViewController.view];
[childViewController didMoveToParentViewController:parentViewController];
// REMOVE THE CHILD VIEW CONTROLLER
[childViewController willMoveToParentViewController:nil];
[childViewController view] removeFromSuperview];
[childViewController removeFromParentViewController];
更新 我已经通过使用这个MZFormSheetController“https://github.com/m1entus/MZFormSheetController”表单演示文稿以及很酷的视图转换来解决这个问题。
答案 0 :(得分:6)
使用 MZFormSheetController “https://github.com/m1entus/MZFormSheetController”表单演示文稿,带有很酷的视图转换。
或者,iOS 8及更高版本,您可以使用viewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
祝你好运,如果你想要一个完整的片段,请告诉我......
答案 1 :(得分:4)
您可以尝试类似的东西,
DetailViewController *viewController= [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
viewController.modalPresentationStyle=UIModalPresentationFormSheet;
viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:viewController animated:YES completion:^{
viewController.view.superview.frame = CGRectMake(0, 0, 310, 500);
viewController.view.superview.center = self.view.center;
}];
根据您设置superview.frame
和modalTransitionStyle
。
答案 2 :(得分:1)
更好的方法是拥有自己的控制器和视图。
在主控制器上使用当前视图控制器。
[self presentViewController:myController animated:YES completion:nil];
在viewDidLoad上调整myController框架。
CGRect newFrame = self.view.frame;
newFame.size.width -= 40;
newFame.size.height -= 40;
newFrame.origin.x = 20;
newFrame.origin.y = 20;
self.view.frame = newFrame
添加为childViewController用于视图控制器包含,当您需要具有多个视图的单个控制器时,每个控制器都有自己的控制器。
答案 3 :(得分:1)
你是正确的方式。但是您必须在故事板上永久添加容器视图,然后您可以通过setHidden:
方法显示/隐藏它。
此外,您还可以通过此方法显示第二个控制器。
答案 4 :(得分:0)
在iPhone和iPod touch上,显示的视图始终为全屏。因此,它无法呈现非全屏视图控制器。
不显示视图控制器,将视图控制器的视图作为子视图添加到父视图控制器。因此,您可以控制外观,甚至是它下面的阴影层。