【问题标题】:How to present an UIViewController like an actionSheet?如何像 actionSheet 一样呈现 UIViewController?
【发布时间】:2015-12-02 07:41:12
【问题描述】:

我想展示一个只占据屏幕下半部分的视图,背景视图保持可见,没有任何可能的交互。

就像带有actionSheet 样式的UIAlertContoller。

如何在 Swift 中做到这一点?

【问题讨论】:

  • 您可以实例化 newViewController 的视图并将其作为子视图添加到您的 currentViewController 中,使用 frame.origin.y = 屏幕大小,然后为该向上移动设置动画
  • 这不是很快,但请尝试从 stackoverflow.com/a/17792844/2535467 调整动画,使其从下向上而不是从右到左进行动画。

标签: ios swift uiviewcontroller


【解决方案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

但是初始定位应该是holding view的viewDidLayoutSubviews方法,比如

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

因为在viewDidLoad 中,视图实际上还没有正确的帧,最终会出现在错误的位置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多