Сбой во время выполнения при попытке изменить атрибуты текста панели навигации SwiftUI

Я пытаюсь изменить текстовые атрибуты панели навигации в SwiftUI (чтобы добавить текстовую тень) и ударился о стену, пытаясь понять, почему я получаю сбои во время выполнения в симуляторе. Был другой поток (см. Ниже), который смог решить проблему изменения типа шрифта с помощью init() для изменения внешнего вида, однако попытка использовать init для изменения метода Text("") для добавления тени приводит к сбою.
Я также попытался извлечь текст ("NavBarTitle") в его собственный метод, а затем применить модификаторы (здесь не повезло). Как видно из моего кода, я пытался извлечь текст в переменную, что привело к сбою. Даже простое применение модификаторов напрямую вызывает сбой.

У меня недостаточно опыта в SwiftUI, чтобы назвать это ошибкой, но мне кажется, что это действительно так.
Заранее спасибо за помощь!

import SwiftUI

struct ContentView: View {

    init() {
        UINavigationBar.appearance().largeTitleTextAttributes = [.shadow: 5]
    }

    let navigationBarText: Text = Text("Navigation Bar")

    var body: some View {
        NavigationView {
            VStack {
                Text("Hello, World!")
            }
            .navigationBarTitle(navigationBarText)

        }
    }
}

ссылка: /questions/49640830/kak-izmenit-atributyi-teksta-dlya-zagolovka-paneli-navigatsii-v-swiftui/49640837#49640837

1 ответ

Решение

Это должно быть предусмотрено NSShadow объект вместо числа, как показано ниже

Тень панели навигации SwiftUI

init() {
    let shadow = NSShadow()
    shadow.shadowOffset = CGSize(width: 5, height: 2)
    UINavigationBar.appearance().largeTitleTextAttributes = [.shadow: shadow]
}
Другие вопросы по тегам