UICollectionView Custom Cell to fill width In Swift UICollectionView Custom Cell to fill width In Swift ios ios

UICollectionView Custom Cell to fill width In Swift


You need to do this programatically.

Implement UICollectionViewDelegateFlowLayout in your view controller and provide the size in collectionView:layout:sizeForItemAtIndexPath:

func collectionView(_ collectionView: UICollectionView,                        layout collectionViewLayout: UICollectionViewLayout,                        sizeForItemAt indexPath: IndexPath) -> CGSize {        let kWhateverHeightYouWant = 100        return CGSizeMake(collectionView.bounds.size.width, CGFloat(kWhateverHeightYouWant))}

You will also want to call collectionView.collectionViewLayout.invalidateLayout() inside your view controller's viewWillLayoutSubviews() so that when the main view's dimensions change (on rotation, for example), the collection view is re-laid out.

Swift 4 Update

func collectionView(_ collectionView: UICollectionView,                            layout collectionViewLayout: UICollectionViewLayout,                            sizeForItemAt indexPath: IndexPath) -> CGSize {            let kWhateverHeightYouWant = 100            return CGSize(width: collectionView.bounds.size.width, height: CGFloat(kWhateverHeightYouWant))}


Inside your view controller override viewDidLayoutSubviews method

@IBOutlet weak var collectionView: UICollectionView!override func viewDidLayoutSubviews() {    super.viewDidLayoutSubviews()    if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {        let itemWidth = view.bounds.width / 3.0        let itemHeight = layout.itemSize.height        layout.itemSize = CGSize(width: itemWidth, height: itemHeight)        layout.invalidateLayout()    }}

(collectionView property is your collectionView)


Use Following code for set the width of UICollectionViewCell.

func collectionView(_ collectionView: UICollectionView,                    layout collectionViewLayout: UICollectionViewLayout,                    sizeForItemAt indexPath: IndexPath) -> CGSize {            return CGSize(width: screenWidth/3, height: screenWidth/3);}