0

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

下面的 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)
}

}

4

2 回答 2

1

在 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

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

于 2019-10-07T13:21:05.900 回答
0

这个解决方案似乎对我很有效:

// Set all fonts in the navigation controller
class CustomNavigationController: UINavigationController {
    // Font names
    let normalFontName = "AppleSDGothicNeo-Medium"
    let boldFontName = "AppleSDGothicNeo-Bold"

    // Font size
    let fontSize = CGFloat(13)

    // Create fonts
    let backButtonFont = UIFont(name: normalFontName, size: fontSize)
    let titleFont = UIFont(name: boldFontName, size: fontSize)

    override func viewDidLoad() {
        super.viewDidLoad()

        // Set standard appearance
        let appearance = UINavigationBarAppearance()
        appearance.backButtonAppearance.normal.titleTextAttributes = [NSAttributedString.Key.font: backButtonFont]
        appearance.titleTextAttributes = [NSAttributedString.Key.font: titleFont]
        UINavigationBar.appearance().standardAppearance = appearance
    }
}
于 2019-10-27T06:03:17.240 回答