Итак, я добавил параметр при инициализации ContentView, поскольку обнаружил, что многие вещи не изменяются внутри contentView. Итак, у меня была строка в SceneDelagate для обработки типа шрифта
let game = EmojiMemoryGame()
var fontType: Font
if game.cards.count == 10{
fontType = Font.body
} else {
fontType = Font.largeTitle
}
let contentView = ContentView(game_viewModel: game, fontType: fontType)
И вот мой код ContentView
struct ContentView: View {
var game_viewModel: EmojiMemoryGame
var fontType: Font
var body: some View {
let cardStack = HStack {
ForEach(game_viewModel.cards) { card in
CardView(card: card).onTapGesture{
self.game_viewModel.choose(card: card)
}
}
}
.padding()
.foregroundColor(Color.orange)
.font(fontType)
return cardStack
}
}
Другой способ сделать это - добавить функцию для обновления шрифтов:
struct ContentView: View {
var game_viewModel: EmojiMemoryGame
func updatefont() -> Font{
if game_viewModel.cards.count == 10{
return Font.body
} else {
return Font.largeTitle
}
}
var body: some View {
let cardStack = HStack {
ForEach(game_viewModel.cards) { card in
CardView(card: card).onTapGesture{
self.game_viewModel.choose(card: card)
}
}
}
.padding()
.foregroundColor(Color.orange)
.font(updatefont())
return cardStack
}
}