Я хочу полностью раскрасить фон своего приложения, в то же время размещая контент вверху, чтобы он находился достаточно далеко от строки состояния и высшей отметки на тех устройствах, на которых он есть.
Если я сделаю что-то вроде этого:
@main
struct SampleApp: App {
var body: some Scene {
WindowGroup {
VStack {
Text("Top of my view")
Spacer()
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.yellow)
}
}
}
Это отобразит текст вверху содержимого под безопасной областью. Но только область содержимого желтого цвета. Безопасные зоны белые.
Поэтому я добавляю .edgesIgnoringSafeAreas(.all)
под модификатором .background
.
Теперь мой текст находится ниже метки (или вверху экрана под текстом строки состояния) и не виден.
Я не хочу случайным образом угадывать верхнюю прокладку, потому что это может быть хорошо на телефонах с выемками, но выглядит неправильно на телефонах или iPad без уведомлений.
Если я помещаю свой VStack
внутрь GeometryReader
, reader.safeAreaInsets.top
будет равен нулю (0), когда верхняя безопасная область игнорируется.
Надеюсь, это достаточно ясный вопрос. Кто-нибудь сталкивался с этим и есть решение?
background
будет ограничен ширинойVStack
, поэтому в этом случае может потребоватьсяframe
. - person pawello2222   schedule 15.10.2020