呈现模态视图控制器而不覆盖iPhone上的当前视图

时间:2013-12-05 02:36:24

标签: ios iphone uiviewcontroller ios7 childviewcontroller

enter image description here

我一直在尝试添加视图容器,从侧面留出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”表单演示文稿以及很酷的视图转换来解决这个问题。

5 个答案:

答案 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.framemodalTransitionStyle

答案 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用于视图控制器包含,当您需要具有多个视图的单个控制器时,每个控制器都有自己的控制器。

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

答案 3 :(得分:1)

你是正确的方式。但是您必须在故事板上永久添加容器视图,然后您可以通过setHidden:方法显示/隐藏它。

此外,您还可以通过此方法显示第二个控制器。

答案 4 :(得分:0)

  1. 在iPhone和iPod touch上,显示的视图始终为全屏。因此,它无法呈现非全屏视图控制器。

  2. 不显示视图控制器,将视图控制器的视图作为子视图添加到父视图控制器。因此,您可以控制外观,甚至是它下面的阴影层。