Использование UIPanGestureRecognizer для изменения изображений в UIImageView Swift 4 - PullRequest
0 голосов
/ 06 июля 2018

Я загрузил 31 изображение в UIImageView и хотел бы использовать UIPanGestureRecognizer, чтобы пользователь просто перемещался вверх и вниз для изменения изображений. Единственный пример, который я могу найти, находится в Obj-C и, похоже, может понять, как заставить его работать. До сих пор я пытался использовать следующий код:

 @IBAction func panPerformed(_ sender: UIPanGestureRecognizer) {
    if sender.state == .began || sender.state == .changed {
        let translation = sender.translation(in: self.view).y
        //print (translation)
        if translation > 0 {  //swipe up

        } else {  //swipe down
            var pos = Int(abs(translation / panThreshold))
            if pos < chartImageArray.count {
                print (pos)
                chartView.image = chartImageArray[pos]
            }


        }

Это прокручивает, но когда вы отпускаете его, очевидно, возвращаетесь к 0. Есть ли какой-нибудь лучший способ для достижения этой функциональности?

Я пытался найти способ отследить номер перехода и каким-то образом увеличить или уменьшить индекс, который будет соответствовать изображению array.

Спасибо Craig

РЕДАКТИРОВАТЬ: Вот код, который я использовал, чтобы получить функционально

@objc func panPerformed(_ sender: UIPanGestureRecognizer) {
    if sender.state == .began || sender.state == .changed {
        let velocity = sender.velocity(in: self.view).y
        var count = 0
        if velocity > 0 {
            count -= 1
        } else {
            count += 1
        }
        movePictures(count)

    } else if sender.state == .ended { //release swipe

    }
}

func movePictures(_ ind:Int) {
    // print (index)
    if index >= 0 {
        index = index + ind
    } else {
        index = arrayCount * panThreshold
    }
    if index <= arrayCount * panThreshold {
        index = index + ind
    } else {
        index = 0
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...