Swipe gesture in Swift 3

后端 未结 7 1229
感动是毒
感动是毒 2020-12-07 17:33

Im trying to get a UISwipeGestureRecognizer to work in Swift 3, the default swipe right is working correctly though not up down or left.

I have tried it by control d

7条回答
  •  生来不讨喜
    2020-12-07 18:22

    var swipeGesture = UISwipeGestureRecognizer()
    

    Take view and set IBOutlet:

    @IBOutlet weak var viewSwipe: UIView!
    

    Write this pretty code on viewDidLoad()

    let direction: [UISwipeGestureRecognizerDirection] = [.up, .down, .left, .right]
        for dir in direction{
            swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.swipeView(_:)))
            viewSwipe.addGestureRecognizer(swipeGesture)
            swipeGesture.direction = dir
            viewSwipe.isUserInteractionEnabled = true
            viewSwipe.isMultipleTouchEnabled = true
        }
    

    Now, this is method is calling when swipe gesture is recognized.

    @objc func swipeView(_ sender:UISwipeGestureRecognizer){
        UIView.animate(withDuration: 1.0) {
            if sender.direction == .right{
                self.viewSwipe.frame = CGRect(x: self.view.frame.size.width - self.viewSwipe.frame.size.width, y: self.viewSwipe.frame.origin.y, width: self.viewSwipe.frame.size.width, height: self.viewSwipe.frame.size.height)
            }else if sender.direction == .left{
                self.viewSwipe.frame = CGRect(x: 0, y: self.viewSwipe.frame.origin.y, width: self.viewSwipe.frame.size.width, height: self.viewSwipe.frame.size.height)
            }else if sender.direction == .up{
                 self.viewSwipe.frame = CGRect(x: self.view.frame.size.width - self.viewSwipe.frame.size.width, y: 0, width: self.viewSwipe.frame.size.width, height: self.viewSwipe.frame.size.height)
            }else if sender.direction == .down{
                self.viewSwipe.frame = CGRect(x: self.view.frame.size.width - self.viewSwipe.frame.size.width, y: self.view.frame.size.height - self.viewSwipe.frame.size.height, width: self.viewSwipe.frame.size.width, height: self.viewSwipe.frame.size.height)
            }
        }
    }
    

    100% working in my project and tested

提交回复
热议问题