如何像ActionSheet一样呈现UIViewController?

时间:2015-09-06 18:41:31

标签: ios swift uiviewcontroller

我想提供一个只占据屏幕下半部分的视图,背景视图仍然可见,没有可能的交互。

就像UIAlertContoller风格的actionSheet一样。

如何在Swift中做到这一点?

1 个答案:

答案 0 :(得分:1)

将该视图创建为普通的UIViewController,为其指定一个标识符,然后像这样实例化它:(保留它作为成员变量,你需要它)

var controller = self.storyboard!.instantiateViewControllerWithIdentifier("yourIdentifier") as! UIViewController

然后您可以将其添加到父视图中,如

self.addSubview(controller)

小心定位它,你可以将它整齐地设置到屏幕中间,如

UIView.animateWithDuration(0.5, animations: {
    controller.frame.origin.y = UIScreen.mainScreen().bounds.height/2
})
 in

但初始定位应该是持有视图的viewDidLayoutSubviews方法,如

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    controller.frame.origin.y = UIScreen.mainScreen().bounds.height
}

因为在viewDidLoad中,视图还没有真正正确的帧,并且最终会处于错误的位置