Как остановить GeometryReader, изменяющий значение при открытии клавиатуры

#ios #swift #swiftui

#iOS #swift #swiftui

Вопрос:

Я изо всех сил пытаюсь найти документацию в поддержку этого, но кажется, что значения

GeometryReader.size.width amp; height изменяется при открытии клавиатуры. Это можно доказать с помощью чего-то вроде:

 var body: some View {
    TabView {
        GeometryReader { g in
                    Rectangle()
                        .frame(width:g.size.width/2,height:g.size.height/20)
                
                    TextField(...)
                    }
        }
    }
  

который показывает изменение размера прямоугольника при открытии клавиатуры щелчком по текстовому полю.

Как бы мне предотвратить это? Я хочу указать размер рамки относительно размера экрана, чтобы поддерживать много размеров экрана…

Комментарии:

1. Вы не можете. GeometryReader Считывает свободное пространство родительского контейнера, а не всего экрана, поэтому, когда появляется клавиатура, свободного места становится меньше на рамке клавиатуры, поэтому GeometryReader предоставляет динамически уменьшенную рамку, как это было специально разработано. Не могли бы вы вместо этого описать суть проблемы?

Ответ №1:

Вам не нужна программа чтения геометрии, чтобы знать размер экрана. вы можете получить размеры экрана, используя UIScreen.main.bounds.width и UIScreen.main.bounds.height . Обратите внимание, что ширина всегда показывает размер горизонтального измерения, а высота всегда показывает вертикальный размер (при повороте экрана)

Ответ №2:

Добавьте это в GeometryReader:

 .ignoresSafeArea(.keyboard)