Как добавить жест перетаскивания в swiftUI, чтобы изменить представления? Вроде как Snapchat, где правый удар приводит вас к историям? - PullRequest
0 голосов
/ 29 октября 2019

Так что на Snapchat вы проводите влево, чтобы перейти в чаты, и вправо, чтобы перейти к истории / открыть. Как я могу реализовать это в моем приложении? Есть ли у SwiftUI такая возможность с DragGesture ()? Или это есть только в UIKit и какой код, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

В Swift вы можете выполнить это с помощью кода, подобного следующему:

  // First declare and initialize each swipe gesture you want to create.  I have added swipe left and right, to go back and forth between views.

   let rightSwipe : UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(sender:)))
   rightSwipe.direction = .right

   let leftSwipe : UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(sender:)))
   leftSwipe.direction = .left

Далее вы хотите обработать каждый удар внутри функции.

@objc func handleSwipe(sender: UISwipeGestureRecognizer) {

     if sender.direction == .right { // user swiped right
          // push view controller (push new view on the navigation stack)
          self.navigationController?.pushViewController(viewController(), animated: true)

     } else { // user swiped left
          // pop view controller (go back one view on the navigation stack)
          self.navigationController?.popViewController(animated: true)

     }
}
0 голосов
/ 29 октября 2019

Это определенно возможно в swiftUI, но я недостаточно знаком, чтобы говорить, поэтому я отвечу с UIKit, так как вы подразумевали, что UIKit приемлемый ответ и для вас.

Вот концептуально один из способовсделайте это в UIKit

Добавьте распознаватель жестов к вашему виду. Вы можете увидеть, как это сделать, здесь:

Как программно отправить пэджестер в быстром https://developer.apple.com/documentation/uikit/uiview/1622496-addgesturerecognizer

Добавить второй вид справа или слева от вашего вида,Анимируйте второй вид для перемещения в зависимости от движения и местоположения касания.

Вы могли бы также иметь распознаватель жестов, который выполняет пользовательский переход, который анимирует. Создавайте собственные переходы для каждого направления, используя левую и правую анимацию, перемещаясь к различным контроллерам вида.

https://www.appcoda.com/custom-segue-animations/

...