如何更改UINavigationItem的背景颜色?
如何更改UINavigationItem的背景颜色?
在UINavigationItem中更改背景颜色的方法有很多种,其中一种可能的解决方法是将包含Navigation Item的View Controller嵌入到Navigation Controller中,并访问Navigation Bar的颜色属性。
下面是一种解决方法的示例代码:
// 设置导航栏标题颜色
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
// 设置导航栏背景颜色
UINavigationBar.appearance().barTintColor = UIColor.blackColor()
// 设置导航栏标题颜色
let color = UIColor.orangeColor()
self.navigationController?.navigationBar.topItem?.backBarButtonItem?.setTitleTextAttributes(
[NSForegroundColorAttributeName: color], forState: .Normal)
通过使用上述代码,您可以将UINavigationItem的背景颜色更改为所需的颜色。
问题出现的原因是用户想要改变UINavigationItem的背景颜色,但是尝试使用UINavigationBar的background属性无效。解决方法是使用barTintColor属性来改变UINavigationBar的背景颜色。具体实现代码如下:
self.navigationController.navigationBar.barTintColor = UIColor.redColor()
根据官方文档的说明,要改变导航栏的背景颜色,需要访问barTintColor属性。具体的文档描述如下:
The tint color to apply to the navigation bar background.
如果想要编辑导航栏的样式,比如按钮颜色,应该访问barTint属性。如果想要编辑navigationItem的样式,比如返回按钮,应该编辑button属性,而不是UINavigationItem本身。
建议用户学会阅读官方文档,文档链接如下:
[developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UINavigationBar_Class/index.html#//apple_ref/occ/instp/UINavigationBar/barTintColor](developer.apple.com/library/p...)
问题出现的原因是用户想要改变UINavigationItem的背景颜色,但是在界面属性检查器中只有三个选项,无法直接更改背景颜色。解决方法是通过代码来改变背景颜色。
对于Objective-C,可以在viewDidLoad方法中加入以下代码:
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
对于Swift,有以下两种解决方法:
方法一:
self.navigationController?.navigationBar.barStyle = UIBarStyle.BlackTranslucent
self.navigationController?.navigationBar.barTintColor = UIColor.redColor();
方法二:
self.navigationController!.navigationBar .setBackgroundImage(UIImage .new(), forBarMetrics: UIBarMetrics.Default)
self.navigationController!.navigationBar.shadowImage = UIImage .new();
self.navigationController!.navigationBar.translucent = true;
self.navigationController!.navigationBar.backgroundColor = UIColor.redColor();
如果想要改变导航栏文字的颜色,可以使用以下代码:
navigationController.navigationBar.titleTextAttributes = [UITextAttributeTextColor: UIColor.blueColor()]
具体的解决方法可以参考这个链接:[Here](https://stackoverflow.com/questions/24687238)
以上是用户询问的问题以及解决方法的整理。