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

标签 ios swift uiview uiviewanimationtransition

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

为了更好的理解截图:

enter image description here enter image description here

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/

相关文章:

ios - Dropbox UIDocumentPicker 插件无法打开 OS X 文件包

ios - 为什么我的 UIAlertController 直到我第二次按下它的选项卡时才出现?

swift - 如何使用枚举(在结构内部定义)作为字典的键?

ios - 将屏幕坐标转换为 UIView 本地点

ios - 屏蔽 UIView

iphone - 如何在不占据整个屏幕的 UIView 上使用 UIModalTransitionStylePartialCurl?

ios - UITextView/UITextField 中的格式化文本/标签

ios - MFMailComposeViewController 显示定位

ios - 使用PaypalSDK iOS iOS导航颜色在iOS中未更改

ios - 当你点击一个单元格时,placeholderImage 被传输,当我返回后,向上并点击照片正在更改的同一个单元格