Gewusst wie: hinzufügen von PageControl innen UICollectionView Bild Scrollen
Hallo, ich habe UICollectionView
Horizontal Image listing codes, die ich hinzufügen möchten PageControl
beim scrollen die Bilder zeigt , die ich Hinzugefügt pagecontrol-Selektor und IBOutlet
aber , wie kann ich das integrieren ? zwischen UICollecitonView
. ?
Meine codes nach unten.
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.
}
}
InformationsquelleAutor SwiftDeveloper | 2016-12-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier haben Sie eine komplette Klasse mit dem Page-Control-Seitenzählung in einer horizontalen Ansicht Sammlung.
Dieser arbeitet auf einer meiner Anwendungen, sofort und richtig funktioniert. Wenn Sie nicht bekommen kann es arbeiten, fühlen Sie sich frei, mich zu Fragen, und ich werde Ihnen helfen.
Zuerst in das Storyboard Sie haben, um Ihre CollectionView mit:
Layout: Flow
Scroll-Richtung: Horizontal
Scrolling aktiviert
Paging aktiviert
Das ist, weil, um eine Seite für jedes Element, müssen Sie die Abschnitte, nicht in Zeilen
Aber mit dieser Lösung, wenn der Benutzer Eingaben auf der nächsten Seite und dann klaut wieder zurück, ohne heben seine finger, die von pageControl zeigt die falsche Seite. Ich denke, Sie sollten überlegen, @luke ' s Antwort
Das ist etwas, was Sie sollte klar hervorgehen, in Ihrer Antwort
Wird die display-Zelle !! Cheers....
InformationsquelleAutor Juan Curti
Ich bin kein fan von die akzeptierte Antwort. Von Zeit zu Zeit
willDisplay cell
wird wieder die falsche Seite für Seite Steuern je nach Benutzer-Interaktion.Was ich benutze:
Aktualisieren Sie die Seite, nachdem der Benutzer beendet hat, scrollen, wodurch die
currentPage
despageControl
genauer.Arbeiten wie ich will. Thx
Sollte man sich am besten beantworten
InformationsquelleAutor luke
Für ein stärker UIPageControl, ich benutze lieber
scrollViewDidScroll
- und berechnen die Abweichung mit Bezug auf die horizontale Mitte des scrollView.InformationsquelleAutor David Baez
Warten
scrollViewDidEndDecelerating
Ergebnisse in einem langsamen update auf dieUIPageControl
. Wenn Sie möchten, eine ansprechende UI, ich schlage vor, statt der UmsetzungscrollViewWillEndDragging(_:withVelocity:targetContentOffset:)
.Swift 4 Beispiel, wo jede Sammlung anzeigen Abschnitt ist eine Seite:
Ich habe als Ersatz
section
füritem
Wenn Sie streichen, schnell genug, der aktuellen Seite erzeugen kann das falsche Ergebnis.
InformationsquelleAutor Chris Chute
Luke ' s Antwort war ein guter start für mich, aber es hatte zwei Probleme: es hat nicht Häufig aktualisiert werden (bereits in anderen Antworten), aber vor allem ist es nicht die richtige Seite für das Letzte Element in meiner Sammlung anzeigen (horizontal ausgerichtet) und es nur eingeschaltet Seite, wenn das Element war fast verlassen den Bildschirm.
Für die erste Ausgabe, wie andere erwähnt, mit
scrollViewDidScroll
zur Verfügung gestellt, eine bessere Erfahrung. Ich war besorgt über performance-Probleme bei call, also Häufig, aber nicht bemerken.Als für die zweite Ausgabe, für meinen Anwendungsfall, finden die indexPath der Zelle, das in der Mitte des Bildschirms, sofern eine bessere Lösung. Beachten Sie, dass wenn Sie Ihre use-case-passen mehr als zwei Zellen auf dem Bildschirm kann dies angepasst werden müssen. Dieses ist, weil Ihre letzten Zelle würde nie in der Mitte des Bildschirms. Ich würde behaupten aber, dass in diesem Fall mit der
UIPageControl
vielleicht nicht ideal sein, trotzdem.InformationsquelleAutor lbarbosa
InformationsquelleAutor Davender Verma Soni