Hi I'm trying to resize the cell via the auto layout
.
I want display the cell by the 3 by 3.
First Cell's margin left=0
Last Cell's margin right=0
And all of the cell's space has 1pt. Like an instagram
.
Should I set to Cell's Size? I want set constraint via the Autolayout.
I also trying to set cell's size using the code.
Here is my code:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSizeMake(123, 123);
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 1;
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 1;
}
But..I think it is not exactly calculate the cell's size.
How do I set cell's size depending on the screen's size?
I have to set space the 1pt between cell's.
Is there anyway to set only using the storyboard?
If not, How do I set by the code?
Thank you.
I don't believe you can set the size by only using the Storyboard because you can't set constraints to recurring items like collection view cells that are created on the fly at runtime.
You can easily compute the size from the information you are given. In
collectionView(_:layout:sizeForItemAt:)
you can access the bounds of thecollectionView
to compute the desired size of your cell:This then works for iPhones and iPads of all sizes.
Great answer by vacawama but I had 2 issues. I wanted the spacing that I defined in storyboard to automatically be used.
And secondly, I could not get this function to invoke and no one mentioned how? In order to invoke the collectionView's sizeForItemAt you need to extend UICollectionViewDelegateFlowLayout instead of extending UICollectionViewDelegate. I hope this saves someone else some time.
Here is another solution but It only works on iPhone6.
I will trying to update for iphone5/6plus
Special thanks to @vacawama!
I set it up using CollectionView's delegate methods. This will give you a 2xN setup but you can easily make it a 3xN instead. Here's a screenshot and you can refer to my project on GitHub...
https://github.com/WadeSellers/GoInstaPro
Swift 3 version code based on vacawama answer: