Я пытаюсь создать ScrollView, который, в свою очередь, содержит GeometryReader (явно не наоборот). GeometryReader должен содержать (изображение) с фиксированной шириной и высотой. Однако при этом ScrollView выдвигает вид «над» экраном, кажется, что он применяет некоторое случайное вертикальное смещение.

var body: some View {
ScrollView {
GeometryReader { geometry in
Image("hp")
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: geometry.size.width, height: 400)
.clipped()
}
}
}
При удалении GeometryReader и просто вставке изображения все работает нормально.
Может кто-нибудь помочь?
Редактировать: Найдено решение. Я добился желаемого поведения, сказав изображению, что оно должно быть таким же высоким и широким, как и внутренний считыватель геометрии. Затем я устанавливаю рамку считывателя внутренней геометрии. Я использую считыватель внешней геометрии для доступа к общим размерам экрана
var body: some View {
GeometryReader { outerGeometry in
ScrollView {
VStack {
GeometryReader { innerGeometry in
Image("hp")
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: innerGeometry.size.width,
height: innerGeometry.size.height)
.offset(y: innerGeometry.frame(in: .global).minY/7)
.clipped()
}
.frame(width: outerGeometry.size.width, height: 300)
}
}
}
}
Надеюсь, это кому-нибудь поможет!