SwiftUI: Новый Rounded стиль текста для заголовка в Navigation Bar

Оказалось, что не так и просто добраться до нового стиля шрифта семейства SF, который анонсировали на WWDC 2019.

После некоторого времени, потраченного безуспешно на поиски примеров на сайте с документацией, а так же на различных сайтах с туториалами и, конечно же, на StackOverflow я решил самостоятельно разобраться, как создавать экземпляр UIFont с помощью UIFontDescriptor с нужным мне face:

    let design = UIFontDescriptor.SystemDesign.rounded
    let descriptor = UIFontDescriptor.preferredFontDescriptor(withTextStyle: .largeTitle)
                                     .withDesign(design)!
    let font = UIFont.init(descriptor: descriptor, size: 48)
    UINavigationBar.appearance().largeTitleTextAttributes = [.font : font]

Сам же дизайн создать и применить очень просто, если вам лишь нужно изменить шрифт у обычного элемента Text:

Text(title).font(.system(.headline, design: .rounded))

К сожалению, изменить такими модификаторами стиль заголовка навбара в SwiftUI нельзя, поэтому приходится использовать UIAppearance протокол. Приведённый в начале код необходимо разместить где-то либо в коде SceneDelegate, либо в init() методе вашего компонента SwiftUI.


Опубликовано

в

от

Метки:

Комментарии

Добавить комментарий