如何将“更多”标签栏的编辑视图的导航栏设置为黑色?

Posted

技术标签:

【中文标题】如何将“更多”标签栏的编辑视图的导航栏设置为黑色?【英文标题】:How to set the "more" tab bar's edit view's navigation bar black? 【发布时间】:2011-11-22 01:28:46 【问题描述】:

我正在尝试设置所有标签栏的导航栏 UIBarStyleBlack。

我也可以通过以下方式为“更多”标签栏实现这一点:

tabBarController.moreNavigationController.navigationBar.barStyle = UIBarStyleBlack;

问题在于,当您单击其顶部的编辑按钮来自定义选项卡时,它会显示一个带有标准蓝色导航栏的新模式控制器,而我无法设置它 UIBarStyleBlack。

【问题讨论】:

找到这个页面link 似乎我可以捕捉到实现此选项卡栏委托方法的模态编辑视图 - (void)tabBarController:(UITabBarController *)controller willBeginCustomizingViewControllers:(NSArray *)viewControllers 【参考方案1】:

该链接有一个稍微老套的解决方案,涉及到监听模式视图何时出现。

Colouring fun with moreNavigationController

直到 ios5+ 使我们能够以更清洁的方式做到这一点。

【讨论】:

在主要应用程序中完成并没有被拒绝 -> 工作正常。 这并不是真的那么 hacky。这不像您在调配或使用私有 API。无论如何,只是想评论一下,所有这些都可以在 iOS 5 及更高版本上使用 UIAppearance 完成。【参考方案2】:

Swift - 自定义 Tabbar -> 更多菜单 -> 编辑视图(导航栏和内容视图)。

override func tabBar(_ tabBar: UITabBar, willBeginCustomizing items: [UITabBarItem]) 
    for (index, subView) in view.subviews.enumerated() 
        subView.backgroundColor = UIColor.black
        if index == 1 
            subView.tintColor = UIColor.green
            for customSubView in subView.subviews 
                if let navBar = customSubView as? UINavigationBar 
                    navBar.isTranslucent = false
                    navBar.barTintColor = UIColor.black
                    navBar.tintColor = .white
                
            
        
    

这对我有用。

【讨论】:

【参考方案3】:

Sublcas UITabBarController 并覆盖这些方法:

- (void)tabBar:(UITabBar *)tabBar willEndCustomizingItems:(NSArray<UITabBarItem *> *)items changed:(BOOL)changed 
    self.moreNavigationController.navigationBar.barStyle = UIBarStyleBlack;


- (void)tabBar:(UITabBar *)tabBar didBeginCustomizingItems:(NSArray<UITabBarItem *> *)items 
    self.moreNavigationController.navigationBar.barStyle = UIBarStyleDefault;

【讨论】:

以上是关于如何将“更多”标签栏的编辑视图的导航栏设置为黑色?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式更改标签栏和导航栏的颜色

在ios 7中将UI状态栏的背景颜色设置为黑色

以编程方式获取导航栏的高度

使用与标签栏相同的视觉效果设置导航栏的样式

设置标签栏的初始视图控制器

如何在 SwiftUI 的标签栏的特定视图中隐藏导航栏?