Шрифт на кнопке Назад на NavBar (Swift) - PullRequest
0 голосов
/ 07 октября 2019

Я могу настроить все остальные аспекты внешнего вида моей панели навигации - но шрифт «Назад» остается упрямым.

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)

class 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)
}

}

Ответы [ 2 ]

1 голос
/ 07 октября 2019

В 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

(Помните также, что элемент кнопки задней панели не является элементом кнопки задней панели, когда этот контроллер представления виден, но когда другой контроллер представления помещается на top этого.)

0 голосов
/ 27 октября 2019

Мне кажется, что это решение хорошо работает:

// 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...