iOS Swift弹出视图控制器

时间:2015-09-02 19:05:19

标签: ios swift uiviewcontroller

我需要让ViewController向上滑动,居中并覆盖当前的ViewController。我认为以下代码可以工作,但它没有:

let view = storyboard?.instantiateViewControllerWithIdentifier("castSpell") as! CastSpellViewController
view.modalPresentationStyle = .OverCurrentContext
presentViewController(view, animated: true, completion: nil)

显示新的ViewController,但就像全屏视图一样。我在故事板中将它的大小设置为400x300。我知道我可以通过在视图中显示视图然后显示叠加视图来做同样的事情。这是我需要去的路线吗?

2 个答案:

答案 0 :(得分:0)

您需要在演示者上设置演示文稿样式,而不是演示视图。

使用self.modalPresentationStyle = .OverCurrentContext

答案 1 :(得分:0)

let popOverVC = UIStoryboard(name: "StoryboardName", bundle: nil).instantiateViewControllerWithIdentifier("ViewControllerName") as! PopOverViewContoller
self.addChildViewController(popOverVC)
popOverVC.view.frame = self.containerView.frame
self.containerView.addSubview(popOverVC.view)
popOverVC.didMoveToParentViewController(self)

使用上面的代码将viewcontroller添加为弹出窗口视图。容器视图是可选的。当子视图位置固定时,我喜欢使用容器视图。我可以使用autolayout定位容器并将其隐藏起来直到需要。

在这种情况下,您可以将容器/子视图放在屏幕底部,从而需要向上滑动子视图。

UIView.animateWithDuration(0.5) { () -> Void in
     //Animate here
}

然后在上面的代码块中更改容器/子视图的框架。

注意:容器视图只是一个普通的UIView。我喜欢命名容器:)