在导航栏和标签栏顶部添加视图

时间:2019-01-05 07:17:00

标签: swift view navbar tabbar

这是我的代码,它放在viewDidLoad()中,它是用于视图的设置,当我单击添加按钮时,该视图会弹出(移至屏幕中间)。

    self.view.bringSubviewToFront(addEntryView)
    addEntryView.layer.cornerRadius = 20
    addEntryView.dropShadow()
    self.addEntryView.layer.borderWidth = 5
    self.addEntryView.layer.borderColor = UIColor(red:0.31, green:0.72, blue:0.95, alpha:1.0).cgColor
    addEntryView.backgroundColor = UIColor.white
    addEntryView.frame = CGRect(x: 0, y: 0, width: 370, height: 695)
    view.addSubview(addEntryView)

但是它在我的导航栏和标签栏的后面。我确实找到了这行代码,使其位于两者之上,然后当我切换选项卡时,视图仍位于屏幕顶部。

UIApplication.shared.keyWindow?.addSubview(addEntryView)

在导航栏和选项卡栏上获得视图的任何帮助,但仅适用于该选项卡,因此当我切换选项卡时,它消失了吗?

谢谢

2 个答案:

答案 0 :(得分:0)

“为什么在切换选项卡时视图仍停留在顶部”的原因是:您试图将addSubview切换到keyWindow,而不是在任何view上特定的viewController,因此它将应用于所有viewController的顶部。

在切换superView中的标签或在要切换标签时调用的任何其他功能之前,您需要从viewWillDisapper中删除此标签。

或者,您可以将此弹出式视图作为modalPresentationStyle等于UIModalPresentationStyle.CurrentContext的单独viewController并通过当前视图控制器呈现。

答案 1 :(得分:0)

利用以下代码在所有内容之上加载视图

var transperantView = UIView()
if  let appDelegate =  UIApplication.shared.delegate as? AppDelegate,
        let window = appDelegate.window {
    transperantView.frame = CGRect(x: 0, y: 0, width: window.bounds.width, height:  window.bounds.height)
    transperantView.backgroundColor = UIColor(red:0.09, green:0.157, blue:0.2, alpha:0.75)
    window.addSubview(transperantView)
}