UINavigationBar改变了UIBarStyle,甚至认为UIBarStyle在UIAppearance中有所不同

Posted

技术标签:

【中文标题】UINavigationBar改变了UIBarStyle,甚至认为UIBarStyle在UIAppearance中有所不同【英文标题】:UINavigationBar changes UIBarStyle, even thought the UIBarStyle is different inUIAppearance 【发布时间】:2013-11-02 18:46:24 【问题描述】:

我喜欢更改TabBarControllers NavigationControllerUINavigationBar,它工作正常,但是当我通过点击选项卡更改视图时,UINavigationBar 将其样式更改为UIBarStyleBlackTranslucent,但不是UITabBar。在我实现主题之前,NavigationBar 样式也是黑色半透明,但我删除了所有代码并更改了 StoryBoard 中的颜色。

我不知道我的应用为什么会这样。我在 AppDelegate.m 中有我的代码,所以它应该是系统范围的。

这是我的白色主题代码:

-(void)whiteTheme 

    UIColor *defaultColor = [UIColor colorWithRed:(21/255.0) green:(121/255.0) blue:(251/255.0) alpha:1];

    [[UITabBar appearance] setTintColor:defaultColor];
    [[UITabBar appearance] setBarStyle:UIBarStyleDefault];
    [[UINavigationBar appearance] setTintColor:defaultColor];
    [[UINavigationBar appearance] setBarStyle:UIBarStyleDefault];


黑色主题:

-(void)blackTheme 

    [[UITabBar appearance] setTintColor:[UIColor whiteColor]];
    [[UITabBar appearance] setBarStyle:UIBarStyleBlack];
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
    [[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];

希望有人知道答案。

【问题讨论】:

【参考方案1】:

如果您单击顶部的项目,请转到您的目标->常规,然后在状态栏样式下拉框中为您的导航栏选择相应的样式。

另一种解决方案:定义特定的导航控制器属性并使用 self.navigationcontroller.navigationbar 代替 [UINavigationBar 外观]

[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];

【讨论】:

以上是关于UINavigationBar改变了UIBarStyle,甚至认为UIBarStyle在UIAppearance中有所不同的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationBar 中的 UISearchBar 在旋转方向时改变宽度

UINavigationController改变UINavigationBar导航条标题颜色跟字体

popViewControllerAnimated 改变 UINavigationBar 的 UIColor

UINavigationBar 的标题不会随着 push segue 的转换而改变

UISearchBar 的宽度在嵌入 UINavigationBar 时不会改变

UINavigationBar 背景图片不随旋转而改变