2017-09-19 1 views
0

J'ai une vue de collection, où chaque cellule est en fait une vue de table qui récupère tout l'écran. Je veux faire défiler seulement à la table suivante (il a placé horizontalement). Donc, je veux qu'à tout moment une seule table est à l'écran. Ainsi, lorsque l'utilisateur balaie vers la droite, la vue de défilement change le contenu pour masquer la vue actuelle de la table et en afficher une autre.Afficher les éléments du défilement de vue seulement

Je peux obtenir ce comportement en implémentant un outil de reconnaissance de gestes et en changeant la vue de défilement contentOffset manuellement, mais je suppose qu'il existe un moyen facile de le faire.

Comment obtenir un comportement dont j'ai besoin?

Répondre

1

Vous pouvez activer la pagination sur votre CollectionView si chaque cellule de CollectionView couvre toute la largeur de collectionView.

enter image description here

Enfin, si vous voulez faire sans pagination qui permet, vous pouvez créer une sous-classe de mise en page UICollectionView

class YourCollectionViewLayout: UICollectionViewFlowLayout { 

     override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint { 
      var offsetAdjustment = CGFloat.greatestFiniteMagnitude 

      let horizontalOffset = proposedContentOffset.x + 5 //your cell inset 
      let targetRect = CGRect(origin: CGPoint(x: proposedContentOffset.x, y: 0), size: self.collectionView!.bounds.size) 

      for layoutAttributes in super.layoutAttributesForElements(in: targetRect)! { 
       let itemOffset = layoutAttributes.frame.origin.x 
       if (abs(itemOffset - horizontalOffset) < abs(offsetAdjustment)) { 
        offsetAdjustment = itemOffset - horizontalOffset 
       } 
      } 

      return CGPoint(x: proposedContentOffset.x + offsetAdjustment, y: proposedContentOffset.y) 
     } 
    } 
+1

réponse est tout simplement - self.collectionView.isPagingEnabled = true mais grâce) –

+0

@ evgeniy-kleban: Je suis content d'avoir résolu le problème :) codage heureux –