Я начинаю со следующего горизонтального ScrollView в SwiftUI и, тестируя его на iPhone 11 в ландшафтном режиме, я вижу, что даже несмотря на то, что рамка ScrollView учитывает как .leading
, так и .trailing
вставки при прокрутке элементов внутри они появляются за выемкой и за пределами ScrollView.
ScrollView(.horizontal) {
HStack {
ForEach(1..<20) { index in
Rectangle().frame(width: 100, height: 100).opacity(0.5)
}
}
}.background(Color(.red)).opacity(1)
Это желаемое поведение, и я вижу, что это происходит в таких приложениях, как ярлыки или фотографии для iOS 13. Однако, когда я вставляю приведенное выше в Vertical ScrollView и тестирую в тех же условиях:
ScrollView(.vertical) {
VStack {
ScrollView(.horizontal) {
HStack {
ForEach(1..<20) { index in
Rectangle().frame(width: 100, height: 100).opacity(0.5)
}
}
}.background(Color(.red)).opacity(1)
}
}.background(Color(.blue)).opacity(0.5)
В этом случае элементы внутри горизонтального ScrollView никогда не go за пределами родительского ScrollView. Если я попробую .edgesIgnoringSafeArea(.all)
в родительском ScrollView, и я запускаю приложение в альбомной ориентации, после первого взаимодействия кажется, что происходит некоторое изменение положения, но затем горизонтальный ScrollView отображается обрезанным при повороте в портретный режим.
Почему это происходит и как я могу добиться желаемого поведения? (Например: элементы Horizontal ScrollView отображаются за пределами их границ ScrollView при прокрутке, но все остальное остается в соответствии с SafeArea
)