iPhone,iOS 8:如何将presentViewController小于原始视图控制器?

时间:2015-03-02 23:23:41

标签: ios iphone swift uiviewcontroller presentviewcontroller

我有两个视图控制器,我想呈现第一个VC的视图控制器(VC)。第二个VC的尺寸较小。我想在第一个上显示第二个视图控制器。像一个弹出窗口。如果我们添加另一个从下到上滑动但在导航栏停止的视图控制器,你可以想象它。

这是我的代码:

@IBAction func showSecondVC(sender: AnyObject) {

    let secondViewController = storyboard?.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController

    secondViewController.view.frame = CGRect(origin: CGPoint(x: view.frame.origin.x, y: header.frame.height), size: CGSize(width: view.frame.width, height: view.frame.height - header.frame.height))

    secondViewController.definesPresentationContext = true
    secondViewController.providesPresentationContextTransitionStyle = true

    secondViewController.modalPresentationStyle = UIModalPresentationStyle.CurrentContext

    self.presentViewController(secondViewController, animated: true, completion:nil)


}

您可以看到我为secondViewController设置了框架。我希望它会与这个帧一起使用,但如果我添加完成块并在动画后显示它的帧,它将与第一个View Controller相同。

修改

我还想提一下,我尝试以纵向方式制作它。

2 个答案:

答案 0 :(得分:3)

如果您在iPhone中尝试此功能,呈现的视图控制器的内置根视图将始终为全屏,因此您调整大小的努力将无法成功。 (iPad是一个不同的故事)

只是让根视图原样(即不要与它的全屏尺寸对抗),但要使其背景颜色颜色清晰。如果你想呈现某种自定义视图/内容/无论它是什么......例如一个带有一些警告的小视图......或者一些选项。只需将其添加为根视图的子视图。

更新: 正如UIViewController类文档所说:

“在水平紧凑的环境中,呈现的视图始终为全屏。”

我能想象到的唯一组合是横向模式下的Iphone6 +,其中水平尺寸等级比紧凑更大。所以你运气不好因为你想要肖像。

答案 1 :(得分:0)

在将ViewController的背景颜色设置为清除后,添加伯爵格雷的响应。创建具有以下属性集的segue:

  • 种类至"以模式呈现"
  • 演示至"过度背景"