I have a UICollectionView created from storyboard,
I want to have 3 items per row in the view. I managed to do that using the following:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(collectionView.frame.size.width/3.6 , (collectionView.frame.size.height-100)/2);
}
However, if i have 6 items, i got 2 rows with 3 items each. But when i have 4 items, it will display 2 rows with 2 items each.
Is it possible to display them in 2 rows, the first with 3 items and the second contains only 1?
You need to calculate first the available space for the content and then divide that by the number of items you want to present per row.
Here is an example assuming that the
UICollectionView
is taking all the width of the screenhere i did it , i implemented UICollectionViewDelegateFlowLayout on UICollectionView add following method . it work , use it .
this method work as screen size width divided by 3 .
try this
Most important thing need to do as well is in size inspector of collectionView set up the minimum spacing for cell & line to 0
I know it is so late, but the solution that i am currently using and handled this case was by using KRLCollectionViewGridLayout as below
You can find KRLCollectionViewGridLayout library class using this link
Apply the below code too-(viewWillTransitionToSize)
This Code will help to get the same no. of cells in portrait as well as in landscape mode also. I have applied above code to get 3 cells in portrait as well as 3 cells in landscape mode.