Я использую UICollectionView для создания смахивания, похожего на Tinder Swipe.Я хочу определить направление прокрутки, когда пользователь начинает перетаскивать перед отображением новой страницы (карточки).При его обнаружении следует установить для изображения значение «Большие пальцы вверх» (пролистывание вправо) или «Большие пальцы вниз» (пролистывание влево).
Теперь я использую scrollViewWillBeginDragging, и он почти работает со сравнением contentOffset, но это не то, что я ищу, так как отображает изображение с опозданием.
import UIKit
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UIGestureRecognizerDelegate{
var imageArray = [UIImage(named: "profil"), UIImage(named: "profil"),UIImage(named: "profil"),UIImage(named: "profil"),UIImage(named: "profil"),UIImage(named: "profil"),UIImage(named: "profil")]
@IBOutlet weak var thumbImage: UIImageView!
var currentPage = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return imageArray.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ImageCollectionViewCell", for: indexPath) as! ImageCollectionViewCell
cell.imgImage.image = imageArray[indexPath.row]
cell.backgroundColor = indexPath.item % 2 == 0 ? .red : .green
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: collectionView.frame.width, height: collectionView.frame.height)
}
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
var page = Int(scrollView.contentOffset.x / scrollView.frame.size.width)
if(page > currentPage)
{
thumbImage.isHidden = false
thumbImage.image = #imageLiteral(resourceName: "thumbsup")
print("RIGHT")
} else {
thumbImage.isHidden = false
thumbImage.image = #imageLiteral(resourceName: "thumbsdown")
print("LEFT")
}
currentPage = page
}
}