设置网格UICollectionView的单元格间距


要设置单元格cell的间距(水平间距,垂直间距)可进行如下设置:

方法1:在storyboard中设置
选择Collection View后在面板里设置Min Spacing相关属性(这里也可以设置单元格大小)
原文:Swift - 设置网格UICollectionView的单元格间距


方法2:在代码里设置
1
2
3
4
5
6
7
8
9
10
11
12
13
import UIKit
 
class ViewController : UICollectionViewController {
     override func viewDidLoad() {
         super .viewDidLoad()
        
         var flow: UICollectionViewFlowLayout = self .collectionViewLayout as ! UICollectionViewFlowLayout
         //水平间隔
         flow.minimumInteritemSpacing = 5.0
         //垂直行间距
         flow.minimumLineSpacing = 5.0    
     }
}

注意:这个设置的是允许的最小间距,程序可能会自动调整的
如下图,单元格尺寸固定为100*100。同时将水平间距、垂直间距都设为2。虽然垂直间距没问题,但由于水平间距如果是2的话,一行摆3个单元格填充不满一行,一行摆4个单元格又不够。
那么程序就会自动调大单元格的水平间距,让一行里面均匀地分布3个单元格。
原文:Swift - 设置网格UICollectionView的单元格间距
如果想要使间距不发生变化,可以有如下两种方法(或是这两种方法的结合):

方法1:让单元格宽度动态变化
比如下图,每行摆放3个单元格,每个单元格的宽度是: (视图宽度 - 2个间距)/ 3。这样无论屏幕尺寸如何变化,水平间距都是固定的。
原文:Swift - 设置网格UICollectionView的单元格间距
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
override func viewDidLoad() {
     super .viewDidLoad()
     
     self .collectionView?.backgroundColor = UIColor .whiteColor()
     let layout: UICollectionViewFlowLayout = self .collectionViewLayout
         as ! UICollectionViewFlowLayout
     //间隔
     let spacing: CGFloat = 2
     //水平间隔
     layout.minimumInteritemSpacing = spacing
     //垂直行间距
     layout.minimumLineSpacing = spacing
     
     //列数
     let columnsNum = 3
     //整个view的宽度
     let collectionViewWidth = self .collectionView!.bounds.width
     //计算单元格的宽度
     let itemWidth = (collectionViewWidth - spacing * CGFloat (columnsNum-1))
         / CGFloat (columnsNum)
     //设置单元格宽度和高度
     layout.itemSize = CGSizeMake (itemWidth, itemWidth)
}

方法2:单元格宽度固定,两侧设置内边距
如下图,单元格和水平间距是固定的,但在两侧设置内边距,每个边距宽度是: (视图宽度 -2个间距 -3个单元格宽度)/ 2
(当然也可以只在一侧设置被边距,比如右侧留白)
原文:Swift - 设置网格UICollectionView的单元格间距
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
override func viewDidLoad() {
     super .viewDidLoad()
     
     self .collectionView?.backgroundColor = UIColor .whiteColor()
     let layout: UICollectionViewFlowLayout = self .collectionViewLayout
         as ! UICollectionViewFlowLayout
     //间隔
     let spacing: CGFloat = 2
     //水平间隔
     layout.minimumInteritemSpacing = spacing
     //垂直行间距
     layout.minimumLineSpacing = spacing
     
     //列数
     let columnsNum = 3
     //整个view的宽度
     let collectionViewWidth = self .collectionView!.bounds.width
     let leftGap = (collectionViewWidth - spacing * CGFloat (columnsNum-1)
         - CGFloat (columnsNum) * layout.itemSize.width) / 2
      print (leftGap)
     layout.sectionInset = UIEdgeInsets (top: 0, left: leftGap, bottom: 0, right: leftGap)
}

参考原文链接 :http://www.hangge.com/blog/cache/detail_762.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值