我有两个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]如果需要,您可以使用UIView.animate()在其具有的y位置约束或其图层的y位置属性上从底部对其进行动画处理。然后,您可以将UISwipeGestureRecognizer附加到其上,以便在其上向下滑动时将向后动画。
2)制作想要呈现viewController的视图,并使用自定义的模态动画来呈现它们。这听起来比您想做的工作还要多。这是youtube上的一个很酷的教程,引导您逐步了解如何在2个视图控制器之间创建自定义动画过渡:https://www.youtube.com/watch?v=B9sH_VxPPo4
但是据我所知,那些.dismiss和.present方法是only
用于视图控制器的。希望我提供的两个选项之一对您有所帮助!