2016-08-16 34 views
1

在启动我的应用程序,我把我“隐藏”标签栏用:UITabBar - 更新alpha值并渲染它? (SWIFT)

UITabBar.appearance().alpha = 0.0

因为一些逻辑,以决定如何在启动后显示已完成该完成的。这一切工作,耶! 但是(哦,Stackoverflow时间),当用户完全搞砸我已经展示给他们的东西时,现在是标签栏重新出现的时候了。因此,在完成块我(显然):

UITabBar.appearance().alpha = 1.0

瞧! 等待!好吧,dispatch_async(dispatch_get_main_queue())?运气好的话? NO

好的很好,所以我们来做一个self.view.layoutIfNeeded()。应该这样做,对吧? BONK,不!

那么更奇怪的是什么?那么,当我在这个视图之上打开一个模式(标签栏仍为,显示为为alpha 0.0,但代码已经指示此时为1.0),然后关闭它,当视图重新出现时,标签栏被重绘(我假设),并出现在alpha为1.0,并显示其所有的荣耀。

那么,什么给了?在初始状态已经被绘制到屏幕上并且alpha被更新后,我该如何让条形图显示?

帮助!

回答

0

我不久前遇到过这个问题,除了在导航栏的上下文中。我很好奇,如果存在某种方式让导航栏重新绘制命令。我观察到的是,如果您滑动手指以移动新页面(甚至略微),则会显示正确的默认值。因此,我认为这是一个重绘问题,直到某种交互发生才会发生。不幸的是,似乎不可能以编程方式完成此操作。

然而,这里的解决方案,我能争取的是有关您的问题:我用

而是

[3斯威夫特],比使用navigationItem.titleView?.tintColor = UIColor.white

​​

但是,我不确定与您的方案的标签栏关联的是什么。也许,你可以弄清楚。 (我将所有这些发布给那些有我的问题的人,并解释你的问题可能在哪里)。

现在,为您的情况。我认为将alpha设置为0可能不是解决您的问题的最佳方式。

试试这个:

UITabBar.appearance().isHidden = true

希望我的解决方案的工作或者这会导致你在正确的方向。