Как ограничить жест перетаскивания определенным кадром только в SwiftUI
Я хочу перетащить круг только в пределах горизонтального кадра. Я пробую приведенный ниже код, вы можете видеть, что форма работает идеально горизонтально, а также с левой стороны, но при перетаскивании правой стороны форма перетаскивается за пределы рамки устройства. Я проверяю так много ответов, но ничего не работало. также попробуйте добавить.onEnded
но не работает. пожалуйста, помогите мне заранее спасибо вот код, который я пробовал
struct ProgressIndicator: View {
@State private var position = CGSize.zero
var body: some View {
GeometryReader { geometry in
VStack(alignment: .leading) {
ZStack {
Circle()
.foregroundColor(Color.blue)
.opacity(0.3)
.frame(width: 40, height: 40, alignment: .leading)
.padding(.bottom, -12)
}
.gesture(
DragGesture()
.onChanged({ (value) in
self.position.width += value.location.x
})
)
.offset(x: self.position.width - 20, y: 0)
}
}
}
}
1 ответ
Решение
Вы можете ограничить позицию с помощью GeometryReader
:
self.position.width = min(self.position.width + value.location.x, geometry.size.width / 2)
Вот результат Playgrounds: