Я загрузил 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
}
}