首页 > 解决方案 > NavBar 上的后退按钮上的字体(Swift)

问题描述

我可以调整导航栏外观的所有其他方面 - 但“返回”的字体仍然很顽固。

下面的 MWE 显示了我尝试过但无济于事的四件事

1)

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIFont(name: "Helvetica-Bold", size: 4)!], for: .normal)
    return true
}

2) 3) 4)

类 customNavigationController: UINavigationController {

override func viewDidLoad() {
    super.viewDidLoad()


    UIBarButtonItem.appearance().setTitleTextAttributes(
    [
        NSAttributedString.Key.font : UIFont(name: "Rockwell", size: 4)!,
        NSAttributedString.Key.foregroundColor : UIColor.white,
    ], for: .normal )

    navigationItem.backBarButtonItem?.setTitleTextAttributes([NSAttributedString.Key.font: UIFont(name: "Chalkduster", size: 7)!], for: .normal)

    navigationBar.topItem?.backBarButtonItem?.setTitleTextAttributes([NSAttributedString.Key.font: UIFont(name: "AvenirNextCondensed-DemiBoldItalic", size: 4)!], for: .normal)
}

}

标签: swiftuinavigationcontrolleruinavigationbaruinavigationitemuinavigationbarappearance

解决方案


在 iOS 13 中最简单:

let app = UINavigationBarAppearance()
app.backButtonAppearance.normal.titleTextAttributes = [
    // whatever
]
UINavigationBar.appearance().standardAppearance = app

在 iOS 13 之前,API 不会画出你想要画的区别。您只需一次为所有后退按钮设置一个单独的栏按钮项目标题文本属性。

let title = // ...
let back = UIBarButtonItem(title: title, style: .plain, target: nil, action: nil)
back.setTitleTextAttributes([
    // whatever
], for: .normal)
self.navigationItem.backBarButtonItem = back

(还请记住,当此视图控制器可见时,您的后退栏按钮项目不是后退栏按钮项目,而是当另一个视图控制器被推到此视图控制器之上时。)


推荐阅读