I have requirement to make the UICollectionView Cell to be scroll to next 5 items from array by clicking on "right" button and show previous 5 times by clicking on "left button".
Can anyone help me by giving any suggestion to make it possbile in swift.
below is the code written, To show list on collection view in horizontal scroll.
override func viewDidLoad() {
super.viewDidLoad()
self.arrFalconList = ["ic_falcon_1","ic_falcon_2","ic_falcon_3","ic_falcon_4","ic_falcon_5","ic_falcon_6","ic_falcon_7"]
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.arrFalconList.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let aFalconCell = collectionView.dequeueReusableCell(withReuseIdentifier: "FalconCollectionViewCell", for: indexPath) as! FalconCollectionViewCell
aFalconCell.imgFalcon.image = UIImage(named: self.arrFalconList[indexPath.row])
aFalconCell.lblFalcon.text = self.arrFalconList[indexPath.row]
aFalconCell.imgFalcon.layer.cornerRadius = ((aFalconCell.imgFalcon.frame.width) / 2)
aFalconCell.imgFalcon.clipsToBounds = true
if aFalconCell.isSelected {
aFalconCell.imgFalcon.layer.borderColor = UIColor.init(red: 241.0/255.0, green: 55.0/255.0, blue: 61.0/255.0, alpha: 1.0).cgColor
aFalconCell.imgFalcon.layer.borderWidth = 2
}else{
aFalconCell.imgFalcon.layer.borderColor = UIColor.clear.cgColor
aFalconCell.imgFalcon.layer.borderWidth = 0
}
return aFalconCell
}
Please share your answer to handle the "left" & "right" button click event.
I have found the solution for the query.
Below code will helpful to achive the requirement.
@IBAction func btnLeftArrowAction(_ sender: Any) {
let collectionBounds = self.collectionView.bounds
let contentOffset = CGFloat(floor(self.collectionView.contentOffset.x - collectionBounds.size.width))
self.moveCollectionToFrame(contentOffset: contentOffset)
}
@IBAction func btnRightArrowAction(_ sender: Any) {
let collectionBounds = self.collectionView.bounds
let contentOffset = CGFloat(floor(self.collectionView.contentOffset.x + collectionBounds.size.width))
self.moveCollectionToFrame(contentOffset: contentOffset)
}
func moveCollectionToFrame(contentOffset : CGFloat) {
let frame: CGRect = CGRect(x : contentOffset ,y : self.collectionView.contentOffset.y ,width : self.collectionView.frame.width,height : self.collectionView.frame.height)
self.collectionView.scrollRectToVisible(frame, animated: true)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With