【问题标题】:Adding View On Top Of Nav Bar and Tab Bar在导航栏和标签栏顶部添加视图
【发布时间】:2019-01-05 20:57:37
【问题描述】:

这是我在 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)

对获取导航栏和标签栏顶部的视图有任何帮助,但仅适用于该标签,因此当我切换标签时,它会消失?

谢谢

【问题讨论】:

    标签: swift view navbar tabbar


    【解决方案1】:

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

    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)
    }
    

    【讨论】:

      【解决方案2】:

      “为什么在切换选项卡时视图保持在顶部”的原因是:您尝试将 addSubview 转换为 keyWindow 但不是在任何特定 viewControllerview 上,因此它将应用于所有 viewController 的顶部。

      在切换viewWillDisapper 中的选项卡或在您即将切换选项卡时调用的任何其他函数之前,您需要从superView 中删除它。

      或者,您可以将此弹出视图设置为单独的视图控制器,其中modalPresentationStyle 等于UIModalPresentationStyle.CurrentContext,并将其呈现在您当前的视图控制器上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-28
        相关资源
        最近更新 更多