Reputation: 25
Collectionview cell has a two item in one row, But Collectionview cell doesn't center in my design.
How can I display the collectionViewCell in center alignment? I want to display like the following image
I am trying many times, can't display the center of CollectionView. Please Help me!
Upvotes: 1
Views: 3098
Reputation: 11
Make the following changes:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
let numberOfItemsPerRow: CGFloat = 2.0
let minimumCellSpacing: CGFloat = 10.0
let totalSpacing = (numberOfItemsPerRow + 1)*minimumCellSpacing //left + right + in-between padding
let width = (collectionView.frame.width - totalSpacing)/numberOfItemsPerRow
return CGSize(width: width, height: width)
}
Once this is done.
Reload your collection view in main thread with a bit delay:
DispatchQueue.main.asyncAfter(deadline: .now() + 0.10) {
self.myCollectionView.reloadData()
}
Upvotes: -1
Reputation: 3924
Working code Swift 4 | Swift 5
You need to use UICollectionViewDelegateFlowLayout method like this
class CardListViewController:UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{
// UICollectionViewDelegateFlowLayout Delegate method
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
let leftAndRightPaddings: CGFloat = 45.0
let numberOfItemsPerRow: CGFloat = 2.0
let width = (collectionView.frame.width-leftAndRightPaddings)/numberOfItemsPerRow
return CGSize(width: width, height: width) // You can change width and height here as pr your requirement
}
}
Output :
Upvotes: 2