Разработка
Реагирование на жесты в SwiftUI: перетаскивание
Узнайте, как реализовать жесты перетаскивания в SwiftUI для создания плавных и интуитивно понятных перетаскиваемых элементов интерфейса.
В SwiftUI, если вам необходимо сгенерировать жест перетаскивания, который вызывает действие, используйте структуру DragGesture.
@State var isBeingDragged = false
var draggingGesture: some Gesture {
DragGesture()
.onChanged { _ in self.isBeingDragged = true }
.onEnded { _ in self.isBeingDragged = false }
}
Модификаторы onChanged(_:) и onEnded(_:) позволяют контролировать, что происходит, когда пользователь выполняет жест, и что происходит после его остановки.
При инициализации объекта жеста перетаскивания можно использовать инициализатор DragGesture(minimumDistance:coordinateSpace:), чтобы определить наименьшее расстояние перетаскивания для завершения жеста с помощью свойства minimumDistance, а также координатное пространство, в котором жест получает значения местоположения, с помощью свойства coordinateSpace.
struct DraggingPlaygroundView: View {
let circleSize: CGFloat = 75
@State var isDragging = false
@State var currentPosition: CGPoint = .zero
var draggingObject: some Gesture {
DragGesture(minimumDistance: 1, coordinateSpace: .local)
.onChanged { gesture in
self.isDragging = true
self.currentPosition = gesture.location
}
.onEnded { _ in self.isDragging = false }
}
var body: some View {
Circle()
.fill(Color.blue)
.shadow(color: .primary, radius: isDragging ? 3 : 0, x: 0, y: isDragging ? 5 : 0)
.frame(width: circleSize, height: circleSize, alignment: .center)
.position(currentPosition)
.gesture(draggingObject)
.onAppear {
setupView()
}
}
private func setupView() {
let initialX = UIScreen.main.bounds.width / 2
let initialY = UIScreen.main.bounds.height / 2
currentPosition = CGPoint(x: initialX, y: initialY)
}
}
-
Аналитика магазинов2 недели назад
Мобильный рынок Ближнего Востока: исследование Bidease и Sensor Tower выявляет драйверы роста
-
Интегрированные среды разработки3 недели назад
Chad: The Brainrot IDE — дикая среда разработки с играми и развлечениями
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2025.46
-
Видео и подкасты для разработчиков2 недели назад
Разбор кода: iOS-приложение для управления личными финансами на Swift. Часть 1

