Код: Выделить всё
import SwiftUI
struct ContentView: View {
@State private var isActive = false
var body: some View {
ZStack {
ScrollView {
VStack {
Rectangle()
.fill(.red)
.frame(height: 200)
Rectangle()
.fill(.orange)
.frame(height: 200)
Rectangle()
.fill(.blue)
.frame(height: 200)
Rectangle()
.fill(.purple)
.frame(height: 200)
Rectangle()
.fill(.yellow)
.frame(height: 200)
Button("Click me") {
isActive = true
}
}
}
.blur(radius: isActive ? 10 : 0)
if isActive {
Color.clear
.background(.black.opacity(0.1))
.contentShape(Rectangle())
.onTapGesture {
isActive = false
}
.border(.orange)
}
}
}
}
#Preview {
ContentView()
}
Нажатие на строку состояния для прокрутки вверх — самый надежный способ воспроизвести проблему, который я нашел, но иногда это происходит, когда просто щелкаешь по наложению, чтобы закрыть его.
Кто-нибудь знает, что является причиной этого? Это ошибка SwiftUI или я делаю что-то не так? Я наблюдал эту проблему в iOS 17.5 и бета-версии iOS 18 с XCode 15.4.
Изменить: добавление изображений
- Исходное состояние

- После выполнения описанных выше действий

- Предпринятые действия

- Иерархия представлений отладки

Судя по иерархии представлений отладки, кажется, что элементы смещены примерно на 20 пикселей относительно того места, где они в конечном итоге отображаются.
Подробнее здесь: https://stackoverflow.com/questions/786 ... iew-layout
Мобильная версия