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);}