Swift 4 - установите скорость панорамирования для поворота изображения - PullRequest
0 голосов
/ 03 октября 2018

До сих пор я пробовал следующий код, но он поворачивает Imageview только один раз, что я ищу, если пользователь слегка проводит пальцем, изображение немного поворачивается и останавливается, и если пользователь проводит с некоторой силой, изображение поворачивается один, два раза итак в зависимости от скорости, проведенной с.Прямо сейчас значения from и to являются статическими.Как настроить скорость панорамирования в этой функции?

@objc func gestureRotate(gesture : UIPanGestureRecognizer) {
    let velocity = gesture.velocity(in: self.imgViw)
    if velocity.x > 0 {
        if gesture.state == .began{
            startingPoint = gesture.velocity(in: self.imgViw)
            print("Starting point: \(startingPoint)")
        }
        if gesture.state == .ended{
            let endingPoint = gesture.velocity(in: self.imgViw)
            print("Ending point: \(endingPoint)")
        }
        print("Pan right")
        UIView.animate(withDuration: 0.5, delay: 0.0, options: .curveLinear, animations: {
            self.imgViw.rotate360Degrees()
        }) { (value: Bool) in
            UIView.animate(withDuration: 0.5, delay: 0.0, options: .curveLinear, animations: {
                self.imgViw.transform = .identity
            }, completion: nil)
        }
    }else{
        print("Pan left")
        UIView.animate(withDuration: 0.5, delay: 0.0, options: .curveLinear, animations: {
            self.imgViw.antiClockwiseRotate360Degrees()
        }) { (value: Bool) in
            UIView.animate(withDuration: 0.5, delay: 0.0, options: .curveLinear, animations: {
                self.imgViw.transform = .identity
            }, completion: nil)
        }
    }

}

extension UIView {
    func rotate360Degrees(duration: CFTimeInterval = 0.5, completionDelegate: AnyObject? = nil) {
        let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
        rotateAnimation.fromValue = 0.0
        rotateAnimation.toValue = 360 * CGFloat(Double.pi / 180)
        rotateAnimation.duration = duration
        if let delegate: CAAnimationDelegate = completionDelegate as! CAAnimationDelegate? {
            rotateAnimation.delegate = delegate
        }
        self.layer.add(rotateAnimation, forKey: nil)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...