我希望只能更改导航栏中后退按钮的文字颜色。
作为一种解决方法,我可以通过创建自定义视图并将其分配给navigationItem.leftBarButtonItem
来做我想做的事情,但它看起来不是很好而且我也是失去了滑动能力。
以上代码:
let button = UIButton(type: .system)
let originalImage = #imageLiteral(resourceName: "BackButton")
let scaledImage: UIImage = UIImage(cgImage: originalImage.cgImage!, scale: 30, orientation: originalImage.imageOrientation)
button.setImage(scaledImage, for: .normal)
button.setTitle("YourTitle", for: .normal)
button.sizeToFit()
button.setTitleColor(.brown, for: .normal)
button.tintColor = .blue
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button)
我还看到了建议通过
设置后退按钮的属性navigationController?.navigationBar.topItem.backBarButtonItem?.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red], for: .normal)
但是,尽管
,这似乎对文本的外观没有任何影响print("Attributes: ", navigationController?.navigationBar.topItem?.backBarButtonItem?.titleTextAttributes(for: .normal) ?? "No attributes")
产生Attributes: ["NSColor": UIExtendedSRGBColorSpace 1 0 0 1]
。
我可以设置tintColor
但是除了标题之外,这会改变背面图标的颜色。
那么做我想要的最好方法是什么?有办法吗?
答案 0 :(得分:0)
我不确定我是否理解正确。但请尝试以下代码。这将适用于您应用的所有栏按钮项。将此代码放在仅在应用程序生命周期内调用一次的位置。与application: didFinishLaunchingWithOptions:
let attribs = [NSForegroundColorAttributeName: UIColor.red, NSFontAttributeName: UIFont.boldSystemFont(ofSize: 18)]
UIBarButtonItem.appearance().setTitleTextAttributes(attribs, for: .normal)
答案 1 :(得分:0)
我明白了。您可以通过在上一个视图控制器中设置self.navigationItem.backBarButtonItem
来设置后退按钮的样式。
例如,在我的情况下,我有TableViewController
,当您点击某个单元格时,该应用会转换为ViewController
。在TableViewController
我有
public func changeColor() {
let barButton = UIBarButtonItem(title: "Anything", style: .plain, target: nil, action: nil)
barButton.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.brown], for: .normal)
self.navigationItem.backBarButtonItem = barButton
}
然后在ViewController
我有
@IBAction func buttonPressed(_ sender: Any) {
let vc = self.navigationController?.viewControllers[0] as! TableViewController
vc.changeColor()
self.title = "hello very long title asdfasdfasfdasdfasdfasdfasdfasdf"
}
因此,按下ViewController
中的按钮会将其后退按钮标题的颜色更改为棕色。