选中或突出显示时全局更改 UIBarButtonItem 文本颜色
Globally change UIBarButtonItem text color when selected or highlighted
我有 UIToolbar
(在我的 UINavigationController
里面),上面有一些 UIBarButtonItem
。
工具栏是 blue
(isTranslucent = false
),按钮是 white
。默认高亮颜色是gray
,看起来很难看。
我找到的唯一解决方案是在 @IBAction
触摸事件中更改 UIBarButtonItem
的 tintColor
。但是我有很多 UIBarButtonItem
并且在每个 @IBAction
.
中编写大量代码非常烦人
你知道如何全局更改它,或者至少,subclass UIBarButtonItem
定义一次并在所有地方使用这个 class 吗?
我用的是swift3,部署目标是iOS9+
您可以使用 appearance 全局更改颜色。在 didFinishLaunchingWithOptions
方法中添加下一行
UIBarButtonItem.appearance().setTitleTextAttributes(
[NSForegroundColorAttributeName: UIColor.white], for: .selected)
UIBarButtonItem.appearance().setTitleTextAttributes(
[NSForegroundColorAttributeName: UIColor.white], for: .highlighted)
你的 didFinishLaunchingWithOptions
函数在你的 AppDelegate
中 告诉代表启动过程几乎完成并且应用程序几乎准备好 运行。
您可以在 UIBarButtonItem
和 UINavigationBar
上使用 appearance
。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Text
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.green], for: .normal)
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.darkGray], for: .selected)
// Images
UINavigationBar.appearance().tintColor = UIColor.orange
return true
}
结果:
Swift 4.2
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIColor.green], for: .normal)
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIColor.darkGray], for: .selected)
我有 UIToolbar
(在我的 UINavigationController
里面),上面有一些 UIBarButtonItem
。
工具栏是 blue
(isTranslucent = false
),按钮是 white
。默认高亮颜色是gray
,看起来很难看。
我找到的唯一解决方案是在 @IBAction
触摸事件中更改 UIBarButtonItem
的 tintColor
。但是我有很多 UIBarButtonItem
并且在每个 @IBAction
.
你知道如何全局更改它,或者至少,subclass UIBarButtonItem
定义一次并在所有地方使用这个 class 吗?
我用的是swift3,部署目标是iOS9+
您可以使用 appearance 全局更改颜色。在 didFinishLaunchingWithOptions
方法中添加下一行
UIBarButtonItem.appearance().setTitleTextAttributes(
[NSForegroundColorAttributeName: UIColor.white], for: .selected)
UIBarButtonItem.appearance().setTitleTextAttributes(
[NSForegroundColorAttributeName: UIColor.white], for: .highlighted)
你的 didFinishLaunchingWithOptions
函数在你的 AppDelegate
中 告诉代表启动过程几乎完成并且应用程序几乎准备好 运行。
您可以在 UIBarButtonItem
和 UINavigationBar
上使用 appearance
。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Text
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.green], for: .normal)
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.darkGray], for: .selected)
// Images
UINavigationBar.appearance().tintColor = UIColor.orange
return true
}
结果:
Swift 4.2
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIColor.green], for: .normal)
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIColor.darkGray], for: .selected)