tabBar&更新到Xcode 8后导航栏变暗

时间:2016-09-19 11:02:57

标签: ios uinavigationbar uitabbar swift3 xcode8

将我的Xcode更新为Xcode 8后,我正面临着这个奇怪的问题。当tab1被选中时,我有一个标签栏和3个标签栏标签栏和导航如下所示:

标签栏的背景颜色为白色,但显示为深色

enter image description here

当我选择任何其他标签时问题得到解决

在下图中我选择了tab2

enter image description here

我不知道它为什么会发生但是在tab1的ViewController中我有一个tableView而在tab2中我有一个ViewController

任何人都知道为什么会发生这种情况?

调试层次结构:

选择TAB1时 enter image description here

选择任何其他选项卡时 enter image description here

我不知道为什么但tabbar的UIVisualEffectBackdropView的背景颜色在tab1上是黑色的,而且它是透明的 其他标签

5 个答案:

答案 0 :(得分:7)

对于因OP的不同原因而遇到此问题的任何人:

当我将行edgesForExtendedLayout = []添加到我的UIViewController的loadView()方法中stop my view going under the navigation bar时,这个问题就出现了。因此,删除该行,而是使用navigationController?.navigationBar.isTranslucent = false为我修复它(尽管John Doe的解决方案也可行)。我想当你的工具栏下没有放置视图时,UIVisualEffectBackdropView会变得不透明,而它恰好是黑色的。如果您的工具栏是透明的,这似乎会产生一个黑暗的工具栏。

答案 1 :(得分:3)

您可以在本地(例如,如果您有CustomTabBarController)和全局解决此问题。我在这里提供两种解决方案,仅供您使用:

<强> 1。本地

  INSERT INTO tbl_certi_gnv
              (placa,
               id_rom,
               nit_distribuidor,
               nit_taller_conv,
               nit_certificador,
               fecha_certificacion_inicial,
               fecha_ultima_revision,
               fecha_proxima_revision,
               boton_habilitado,
               ciudad,
               usuario_ingresa_datos,
               fecha_procesamiento)
  SELECT r_placa,
         r_id_rom,
         d_nit_distribuidor,
         d_nit_taller_conv,
         d_nit_certificador,
         f_fecha_certificacion_inicial,
         f_fecha_ultima_revision,
         f_fecha_proxima_revision,
         d_boton_habilitado,
         r_ciudad,
         d_usuario_ingresa_datos,
         Getdate()
  FROM   #importsuic B
  WHERE  not exists (
           select 1
           FROM   tbl_certi_gnv AS A
           WHERE  A.placa = B.r_placa
                  AND A.id_rom = B.r_id_rom)

<强> 2。全球:在你的AppDelegate.swift中:

    class YourCustomTabBarVC: UITabBarController {

    //MARK:- Initializers
    required init?(coder aDecoder:NSCoder) {
        super.init(coder: aDecoder)
        __customInit()
    }  

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        __customInit()
    }

    fileprivate func __customInit() {
        addObservers()

       //Customize TabBar appearance:
        tabBar.backgroundColor = UIColor.white
    }
    }

我建议你使用全局方法。添加那一行,瞧!你会争先恐后地写下这里的个人感谢信息!

答案 2 :(得分:2)

在我的toolBar上添加阴影会导致问题:

下面的代码在Xcode7(swift 2)中给了我正确的阴影,但是在更新到Xcode 8(swift 3)之后,它改变了我的其他栏的颜色(标签栏+导航栏):

toolbar.layer.masksToBounds = false
toolbar.layer.shadowOffset = CGSize(width: -1, height: 1)
toolbar.layer.shadowRadius = 1
toolbar.layer.shadowOpacity = 0.5

答案 3 :(得分:0)

这对我在进行搜寻时有帮助:

删除hidesBottomBarWhenPushed或将其禁用。

destination.hidesBottomBarWhenPushed = false

答案 4 :(得分:0)

我刚刚将视图控制器的 background color 属性从 .default 更改为 .systemBackgroundColor