Comment ajouter PageControl dans UICollectionView Image Scrolling
Bonjour, j'ai UICollectionView
Horizontale de l'Image liste des codes je veux ajouter PageControl
lors du défilement des images montre , j'ai ajouté de contrôle pagecontrol sélecteur et IBOutlet
mais , comment puis-je l'intégrer ? entre UICollecitonView
. ?
Mes codes ci dessous.
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
@IBOutlet weak var View : DesignableView!
@IBOutlet var collectionView: UICollectionView!
@IBOutlet var collectionViewLayout: UICollectionViewFlowLayout!
@IBOutlet open weak var pageControl: UIPageControl? {
didSet {
pageControl?.addTarget(self, action: #selector(ViewController.pageChanged(_:)), for: .valueChanged)
}
}
override func viewDidLoad() {
super.viewDidLoad()
pageControl?.numberOfPages = 11
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 11;
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell: ImageCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "ImageCollectionViewCell", for: indexPath) as! ImageCollectionViewCell
cell.label.text = "Cell \(indexPath.row)"
cell.backgroundImageView.image = UIImage(named: "Parallax \(indexPath.row + 1)")
//Parallax cell setup
cell.parallaxTheImageViewScrollOffset(self.collectionView.contentOffset, scrollDirection: self.collectionViewLayout.scrollDirection)
return cell
}
@IBAction open func pageChanged(_ sender: UIPageControl) {
print(sender.currentPage)
}
//MARK: Delegate
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return collectionView.bounds.size;
}
//MARK: Scrolling
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//Parallax visible cells
for cell: ImageCollectionViewCell in collectionView.visibleCells as! [ImageCollectionViewCell] {
cell.parallaxTheImageViewScrollOffset(self.collectionView.contentOffset, scrollDirection: self.collectionViewLayout.scrollDirection)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
}
source d'informationauteur SwiftDeveloper
Vous devez vous connecter pour publier un commentaire.
Ici vous avez une classe complète de la Page de Contrôle de la pagination dans une série horizontale de vue.
C'est en travaillant sur l'une de mes applications, à l'instant, et fonctionne correctement. Si vous ne pouvez pas le faire fonctionner, n'hésitez pas à me demander et je vais vous aider.
Tout d'abord, dans la table de montage, vous aurez à configurer votre CollectionView avec:
Disposition: Flux
La Direction De Défilement: Horizontal
Défilement est activé
Pagination activé
Je ne suis pas un fan de la accepté de répondre. De temps à autre,
willDisplay cell
sera le retour de la mauvaise page de la page de contrôle selon les utilisateurs d'interaction.Ce que j'utilise:
Cette volonté de mise à jour de la page lorsque l'utilisateur a fini de défilement et donc de faire de la
currentPage
de lapageControl
plus précis.D'attente pour
scrollViewDidEndDecelerating
résultats dans une lente mise à jour de laUIPageControl
. Si vous voulez un plus sensible de l'INTERFACE utilisateur, je suggère plutôt que la mise en œuvre descrollViewWillEndDragging(_:withVelocity:targetContentOffset:)
.Swift 4 exemple où chaque vue de collection article est une page: