Swift: условный модификатор .font of text () - PullRequest
0 голосов
/ 22 февраля 2020

Я новичок в Swift, который еще учится. Я попытался отформатировать текст на основе логической переменной. Хорошо работает с размером шрифта и стилем. Но он не будет работать со стилями, такими как .bold () или .itali c. есть идеи как это сделать? Я тоже пробовал ViewModifier, но есть та же проблема.

struct ContentView: View {
    @State private var txtFont = false

    var body: some View {
        VStack{
            Spacer()
            Button("Toggle the Textproperty") {
                self.txtFont.toggle()
            }
            Spacer()
            Text("Hello, World!")
                .font(txtFont ? .largeTitle : .none)
                .bold()
                .italic()
//                txtFont ? .bold() : .none <= this line won't work
            Spacer()
        }
    }
}

Та же проблема, с которой я столкнулся при изменении стиля средства выбора с DefaultPickerStyle на SegmentedPickerStyle в зависимости от логического решения. Мне нужно, чтобы пользовательский интерфейс стал более удобным для пользователя.

Любые идеи Как это реализовать?

1 Ответ

1 голос
/ 22 февраля 2020

Вы должны go с .fontWeight (_ weight: Font.Weight?)

Text("Hello, World!")
       .fontWeight(txtFont ? .bold : .regular)

Если вы хотите установить несколько свойств шрифта одновременно, это также легко ,

Text("Hello, World!")
            .font(txtFont ? .largeTitle.bold().italic() : .none)
...