【问题标题】:iOS Swift Popup View ControlleriOS Swift 弹出视图控制器
【发布时间】:2015-09-02 19:05:18
【问题描述】:

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

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

新的 ViewController 显示为全屏视图。我在情节提要中将其尺寸设置为 400x300。我知道我可以通过在视图中拥有一个视图然后显示覆盖视图来做同样的事情。那是我需要走的路线吗?

【问题讨论】:

  • 这是适用于 iOS 7 还是适用于 iOS 8?
  • 这是 iOS 8。我实际上想出了一种方法,即使用 Popover 并将箭头设置为 0。

标签: ios swift uiviewcontroller


【解决方案1】:

您需要在 presenter 上设置演示样式,而不是在 presenting 视图上设置。

使用self.modalPresentationStyle = .OverCurrentContext

【讨论】:

  • 我的代码现在看起来像这样,但它仍然做同样的事情:让 view = storyboard?.instantiateViewControllerWithIdentifier("castSpell") as! CastSpellViewController self.modalPresentationStyle = .OverCurrentContext presentViewController(view, animated: true, completion: nil)
  • 恢复原码并添加self.definesPresentationContext = true
【解决方案2】:
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 添加为弹出视图。容器视图是可选的。当子视图位置固定时,我喜欢使用容器视图。我可以使用自动布局定位容器,并在需要时将其隐藏。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    相关资源
    最近更新 更多