Использовать SwiftUI GeometryReader без влияния на внешнюю рамку?
Можно ли использовать GeometryReader
таким образом, что он не просто заполняет родительское представление?
В качестве конкретного примера, я хочу контролировать нижнее поле, используя .padding(.bottom, geometry.safeAreaInsets.bottom > 0 ? 0 : 12.0)
, Это позволит использовать безопасную область в качестве поля на iPhone X и настраиваемое поле на старых устройствах.
Без GeometryReader
мой взгляд занимает место, соответствующее его фактическому вертикальному размеру. С ридером вид занимает 1/2 экрана.
VStack {
Spacer()
GeometryReader { proxy in // Lays out nicely without this...
HStack {
Text("Wrong")
Spacer()
}.border(Color.gray, width: 1)
}
2 ответа
Решение
Просто добавьте .fixedSize()
Модификатор для вашего HStack. Это достигнет желаемого эффекта.
Вы также можете попробовать добавить
.aspectRatio(contentMode: .fit)
модификатор к
GeometryReader
.