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

问题描述 投票:1回答:1

我有两个UIViewControllers,我想要.present灰色UIView,就像您通常会出现一个ViewController(出现在底部,用户可以向下滑动以将其关闭)。

屏幕截图可帮助您更好地理解:

enter image description hereenter image description here

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时找不到。感谢任何提示:)

ios swift uiview uiviewanimationtransition
1个回答
0
投票

嗯,我能想到两个答案:

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

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

但是据我所知,那些.dismiss和.present方法是only

用于视图控制器的。希望我提供的两个选项之一对您有所帮助!
© www.soinside.com 2019 - 2024. All rights reserved.