我有两个 UIViewControllers
并且我想.present
灰色的 UIView
就像你通常会呈现一个 ViewController
(自下而上出现,用户可以向下滑动以关闭)。
为了更好的理解截图:
bottomBar 是一个 ContainerView
,不应通过在 VC 之间切换而改变,只有灰色的 UIView
,您可以在第二张图片中看到。
我知道我可以只.present
ViewControllerB
没有动画,然后让UIView
从屏幕外出现。但是,如果我这样做,用户将无法向下拖动 UIView
以关闭
。
这就是我目前呈现 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) 如果需要,您可以使用 UIView.animate() 在它具有的 y 位置约束或其图层的 y 位置属性上从底部开始动画。然后,您可以将 UISwipeGestureRecognizer 附加到它,这样如果您向下滑动它,它就会向下滑动。
2) 制作您想要呈现 viewController 的 View ,并使用自定义模态动画呈现它们。这听起来比你想做的要多。这是 youtube 上的一个很酷的教程,它会引导您完成如何在 2 个 View Controller 之间创建自定义动画过渡: https://www.youtube.com/watch?v=B9sH_VxPPo4
但是,据我所知,那些 .dismiss 和 .present 方法仅用于 View Controller 。希望我提供的两个选项之一对您有所帮助!
关于ios - Swift - 呈现一个 UIView(不是 ViewController),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58922817/