У меня есть представление, которое я хотел бы отобразить как полноэкранное покрытие. После его представления я заметил одну небольшую проблему: размер шрифта не изменяется при изменении динамического типа. Есть ли хороший способ это исправить?
Вот мой код
import SwiftUI
struct FullScreenModal: View {
@State var showModal: Bool = false
var body: some View {
VStack {
Text("Parent view")
Button("Open Modal") {
showModal = true
}
}
.fullScreenCover(isPresented: $showModal, content: {
Text("This is a full screen cover.")
})
}
}
#Preview {
FullScreenModal()
}
@Sweeper Да, это происходит на реальном устройстве, а также на симуляторе... Я думаю, что это ошибка в FullScreenCover... Смотрите мой ответ, это простой способ решить эту проблему





Вот пример с DetailView, а также только с текстом на вашем листе. Используйте .environment(.sizeCategory, .accessibilityExtraExtraExtraLarge)
import SwiftUI
struct ContentView: View {
@State var showModal: Bool = false
var body: some View {
VStack {
Text("Parent view")
Button("Open Modal") {
showModal = true
}
}
.fullScreenCover(isPresented: $showModal, content: {
// DetailView()
Text("Detail view")
.environment(\.sizeCategory, .accessibilityExtraExtraExtraLarge)
})
}
}
#Preview {
ContentView()
.environment(\.sizeCategory, .accessibilityExtraExtraExtraLarge)
}
#Preview("Detail") {
DetailView()
.environment(\.sizeCategory, .accessibilityExtraExtraExtraLarge)
}
struct DetailView: View {
@Environment(\.dismiss) var dismiss
var body: some View {
Text("This is a full screen cover.")
Button("Close") {
dismiss()
}
}
}
Это помогло мне разобраться, я опубликовал еще один ответ, основанный на вашем.
Меня вдохновил ответ @Martin Poulsen, поэтому я хочу сохранить одинаковые категории размеров в родительских и дочерних представлениях, поэтому для этого вам нужно будет получить экземпляр объекта sizeCategory Environment и передать его дочернему элементу таким же образом. что Мартин сделал. Вот рабочий пример:
import SwiftUI
struct FullScreenModal: View {
@Environment(\.sizeCategory) var sizeCategory
@State var showModal: Bool = false
var body: some View {
VStack {
Text("Parent view")
Button("Open Modal") {
showModal = true
}
}
.fullScreenCover(isPresented: $showModal, content: {
Text("This is a full screen cover.")
.environment(\.sizeCategory, sizeCategory)
})
}
}
#Preview {
FullScreenModal()
}
Это происходит и на реальном устройстве? Превью всегда были какие-то глючные.