如何在 Swift 中更改 UIBarButtonItem 的 tintColor?

Posted

技术标签:

【中文标题】如何在 Swift 中更改 UIBarButtonItem 的 tintColor?【英文标题】:How to change tintColor of UIBarButtonItem in Swift? 【发布时间】:2016-01-05 01:24:38 【问题描述】:

我想将右栏按钮项的颜色从黑色更改为白色。它是一个作为搜索图标的按钮。我还没有对搜索实现进行编码,因为我想先完成主界面。我认为我编写了正确的代码,所以它应该显示为白色,但在情节提要和模拟器中似乎仍然显示为黑色。

在情节提要中,我也将其设置为白色。

这是我的代码,位于AppDelegate.swift 文件中:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 

    // Changing the status bar's colour to white
    UIApplication.sharedApplication().statusBarStyle = .LightContent

    // Changing the navigation controller's background colour
    UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green: 165.0/255.0, blue: 227.0/255.0, alpha: 1.0)

    // Changing the navigation controller's title colour
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]

    // Changing the colour of the bar button items
    UINavigationBar.appearance().tintColor = UIColor.whiteColor()

    // Changing the tint colour of the tab bar icons
    UITabBar.appearance().tintColor = UIColor(red: 0.0/255/0, green: 165.0/255.0, blue: 227.0/255.0, alpha: 1.0)

    return true

这是模拟器的图片:

我觉得这行代码不起作用很奇怪。有什么解决办法吗?

【问题讨论】:

你试过UIBarButtonItem.appearance().tintColor = UIColor.greenColor() @RashwanL 我试过这个,但它仍然是黑色的。我希望它是白色的。 UINavigationBar.appearance().tintColor = UIColor.whiteColor() 应该可以工作。您必须在代码中的某处将tintColor 更改为其他颜色 @Leo 这没用。 【参考方案1】:

SWIFT 4

将自定义 barbuttonitem 声明为插座后:

@IBOutlet weak var yourBarButtonItem: UIBarButtonItem!

您可以随意定义颜色。

 yourBarButtonItem.tintColor = .red

【讨论】:

【参考方案2】:

问题是按钮被自动设置为自定义。我把它改成系统了。

【讨论】:

【参考方案3】:

为普通文本设置文本颜色:

let uiBarButton = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(logOutTapped))
uiBarButton.tintColor = UIColor.appColor
navigationItem.rightBarButtonItems = [uiBarButton]

为属性文本设置文本颜色:

let uiBarButton = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(logOutTapped))
uiBarButton.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.appColor], for: .normal)
navigationItem.rightBarButtonItems = [uiBarButton]

【讨论】:

以上是关于如何在 Swift 中更改 UIBarButtonItem 的 tintColor?的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UIBarButton 项图像

UIBarButton渲染问题

关于swift 自定义TabBarView使用系统tabar遇到的问题

如何减少 UINavigationBar IOS 7 中 UIBarButton 项之间的填充?

如何在 Objective-C 中更改垃圾按钮的颜色? [复制]

iOS 在整个导航控制器中显示相同的 UIBarButton