UICollectionView Cell Spacing based on device screen size

后端 未结 5 1766
眼角桃花
眼角桃花 2020-12-08 01:24

I have implemented a UICollectionView, the cell size is w90 h90. When i run it on iPhone 6 i get the proper spacing between cell but when i do it on iPhone 5s i get more sp

5条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-08 01:50

    Step 1: Implement UICollectionViewDelegateFlowLayout(if not done).

    Step 2: Use delegate method of UICollectionViewDelegateFlowLayout.

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
    {
    return CGSizeMake((UIScreen.mainScreen().bounds.width-15)/4,120); //use height whatever you wants.
    }
    

    Step 3: Go to XIB or StoryBoard where you have your CollectionView.

    Step 4: In XIB or StoryBoard where you have your CollectionView click on CollectionView.

    Step 5: Go to InterfaceBuilder, then in second last tab (ie: Size Inspector) set Min Spacing

    For Cells = 5

    For Lines = 5

    That it.

    Note:

    • This solution is for if you wants to make spacing between cell = 5.
    • If your spacing is different then 5, then you need to change value 15 in delegate method.
    • Ex: Spacing between cell = 10, then change delegate 15 to 10x3 = 30

    return CGSizeMake((UIScreen.mainScreen().bounds.width-30)/4,120);

    • And set Min Spacing

    For Cells = 10

    For Lines = 10

    and vice versa.

    Swift 3 Version

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let width = UIScreen.main.bounds.width
        return CGSize(width: (width - 10)/3, height: (width - 10)/3) // width & height are the same to make a square cell
    }
    

提交回复
热议问题