Swift - 呈现一个 UIView(不是 ViewController)

Swift - Present a UIView (not a ViewController)

我有两个 UIViewControllers,我想 .present 灰色 UIView 就像你通常会呈现一个 ViewController(自下而上出现,用户可以向下滑动解雇)。

为了更好的理解截图:

bottomBar 是一个 ContainerView,不应通过在 VC 之间切换而改变,只有灰色 UIView,您可以在第二张图片中看到。

我知道我可以 .present ViewControllerB 没有动画,然后让 UIView 从屏幕外出现。但是,如果我这样做,用户将无法将 UIView 向下拖动到 dismiss

这就是我目前呈现 ViewControllerB(“wishlistViewController”)的方式。

let wishlistViewController = self.storyboard?.instantiateViewController(withIdentifier: "WishlistVC") as! WishlistViewController

        wishlistViewController.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext

        self.navigationController?.present(wishlistViewController, animated: false)
}

主要问题 是我的 UIView 不是全屏。否则我只能 .present ViewControllerB。但是,在我的设计中,背景图像也会由 .presenting.dismissing 动画化,我不希望这样。

可能有一个非常简单的解决方案,但我无法找到仅展示的 UIView。 感谢任何提示:)

嗯,我能想到的答案有两个:

1) 如果需要,您可以在它具有的 y 位置约束或其图层的 y 位置属性上使用 UIView.animate() 从底部对其进行动画处理。然后,您可以将 UISwipeGestureRecognizer 附加到它,这样如果您向下滑动它,它就会向下滑动。

2) 制作您想要呈现 viewController 的视图,并使用自定义模态动画呈现它们。这听起来比你想做的要多。这是 youtube 上的一个很酷的教程,它会引导您完成如何在 2 个视图控制器之间创建自定义动画过渡: https://www.youtube.com/watch?v=B9sH_VxPPo4

但是,据我所知,那些 .dismiss 和 .present 方法 用于视图控制器。希望我提供的两个选项之一对您有所帮助!