更新到 Xcode 8 后,tabBar 和导航栏变暗
Posted
技术标签:
【中文标题】更新到 Xcode 8 后,tabBar 和导航栏变暗【英文标题】:tabBar & navigation bar became dark after updating to Xcode 8 【发布时间】:2016-09-19 11:02:56 【问题描述】:将我的 Xcode 更新到 Xcode 8 后,我遇到了这个奇怪的问题。 I have a tab bar and 3 tabs in it when tab1 is selected tab bar and navigation looks like this :
标签栏的背景颜色是白色的,但它显示的是深色
当我选择任何其他选项卡时,问题就会得到解决
在下图中我选择了tab2
我不知道为什么会这样,但是在 tab1 的 ViewController 我有一个 tableView 而在 tab2 我有一个 ViewController
有人知道为什么会这样吗??
调试层次结构:
选择Tab1时
选择任何其他选项卡时
我不知道为什么,但是 tabbar 的 UIVisualEffectBackdropView 的背景颜色在 tab1 上是黑色的,在 tab1 上是透明的 其他标签
【问题讨论】:
这看起来像你在它上面有另一个视图或掩码。不仅背景不同,标签图像颜色似乎也不同。或者检查一些 alpha-s。如果你设置了一些alpha,之前的ios SDK可能还看不懂。 请看下面的答案。希望这已经为您解决了。 【参考方案1】:对于其他因 OP 不同原因而遭受此问题的人:
当我将行 edgesForExtendedLayout = []
添加到我的 UIViewController 的 loadView()
方法到 stop my view going under the navigation bar 时,我就发生了这个确切的问题。因此,删除该行并使用navigationController?.navigationBar.isTranslucent = false
实现相同的目标为我修复了它(尽管 John Doe 的解决方案可能也是可行的)。我猜当你的工具栏下没有视图时,UIVisualEffectBackdropView
变得不透明,它恰好是黑色的。如果您的工具栏是透明的,这似乎会产生一个黑色的工具栏。
【讨论】:
这是有史以来最好的答案!。谢谢。【参考方案2】:您可以在本地(例如,如果您有 CustomTabBarController)和全局解决此问题。我在这里为您提供两种解决方案:
1.本地:
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。全局:在您的 AppDelegate.swift 中:
func application(_ application: UIApplication,
didFinishLaunchingWithOptions
launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
/* Your other code*/
UITabBar.appearance().backgroundColor = UIColor.white // UR_DESIRED_COLOR
我建议你使用全局方法。添加那一行,瞧!你会争先恐后地在下面写个人感谢信息!
【讨论】:
【参考方案3】:原来在我的工具栏上添加阴影导致了这个问题:
下面的代码在 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
【讨论】:
【参考方案4】:这在我执行 segue 时帮助了我:
删除hidesBottomBarWhenPushed
或禁用它。
destination.hidesBottomBarWhenPushed = false
【讨论】:
【参考方案5】:我刚刚将视图控制器的 background color
属性从 .default 更改为 .systemBackgroundColor
【讨论】:
以上是关于更新到 Xcode 8 后,tabBar 和导航栏变暗的主要内容,如果未能解决你的问题,请参考以下文章
从 iOS 11 上的左侧菜单导航后 Xcode 9 导航栏问题不在 iOS 10.3 及更低版本上
Xcode 13 - swift OS 15 中的导航栏和状态栏文本颜色变化