[swift]在 UICollectionView 中创建一个 2 x 2 水平网格?

发布时间: 2017/3/6 23:09:21
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有气泡框具有 UICollectionViewController。想一个 2 x 2 网格,但它只显示一行。我想要两个行。

我试图 UICollectionView 帧除以数量的行,但它仍显示一行。

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    let itemWidth = CGRectGetWidth(collectionView.frame)
    let itemHeight = CGRectGetHeight(collectionView.frame)
    let squareSizeHeight = itemHeight / 2
    let squareSizeWidth = itemWidth / 2
    return CGSizeMake(squareSizeWidth, squareSizeHeight)
}

(注︰ 气泡框我故意让很大了)

enter image description here

解决方法 1:

我成功了!

好的所以最初我集合视图大小是 300 × 300 (在景观)。

我这样做︰

class PhoneViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
let cellId = "cellId"
override func viewDidLoad() {
    super.viewDidLoad()
    //collectionView?.frame = CGRectMake(0, 46, 300, 300) // A no-no here
    navigationItem.title = "Recipients"
    collectionView?.registerClass(UserContactCells.self, forCellWithReuseIdentifier: cellId)
    collectionView?.backgroundColor = UIColor.redColor()
    collectionView?.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    print(collectionView?.frame)

我把我集合视图框架大小改由 300 300 (最初由 1024年 768)。那就不会工作,因为如果我改变了我的气泡框视图回 preferredContentSize = CGSizeMake(300, 300) ,集合视图不会显示在所有。

这里是我所做的里面我collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath)

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    var cvSize = collectionView.frame.size
    cvSize = CGSizeMake(300, 300)
    let itemWidth = cvSize.width - 1
    let itemHeight = cvSize.height - 1
    let squareSizeHeight = itemHeight / 2
    let squareSizeWidth = itemWidth / 2
    return CGSizeMake(squareSizeWidth, squareSizeHeight)
}

我保存在变量中,我的 UICollectionView 的大小,然后将宽度和高度设置为 300,一样我 preferredContentSize 我气泡框。这是我期望的结果︰

enter image description here

它是一个网格,滚动水平:)

官方微信
官方QQ群
31647020