自动布局计算每个collectionViewCell的相同高度

时间:2016-02-01 15:20:28

标签: ios autolayout uicollectionview uicollectionviewcell uicollectionviewlayout

所以我有一个集合视图,它使用我在Github上发现的一个名为CHTCollectionViewWaterfallLayout的自定义布局我到目前为止都喜欢它,但是我希望自定义集合视图单元格在高度上变得动态,而我我无法连接自动布局来计算这个。我在Github上共享了一个简单的示例项目,它生成随机字符串大小并显示它们,唯一的问题是Auto Layout为每个Collection View Cell生成相同的单元格高度。该项目可以找到here

为了让您了解我的思考过程,我使用方法CHTCollectionViewDelegateWaterfallLayout sizeForItemAtIndexPath计算单元格高度。因为我也使用委托方法columnCountforSection,因为我根据方向提供了有限数量的列,我采用collectionView框架宽度,然后除以列数以获得单元格的宽度。

enter image description here

   func collectionView (collectionView: UICollectionView,layout collectionViewLayout: UICollectionViewLayout,
        sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
    {
        var cell = dict["heightCell"] as? CollectionViewCell

        let randomString = RadomStrings[indexPath.item]

        let float = CGFloat(columnCount)
        let width = collectionView.bounds.size.width / float
        if cell == nil {
            cell = NSBundle.mainBundle().loadNibNamed("CollectionViewCell", owner: self, options: nil)[0] as? CollectionViewCell
            dict["heightCell"] = cell
        }
        cell?.RandomStringLabel.text = randomString
        cell!.frame = CGRectMake(0, 0, CGRectGetWidth(collectionView.bounds), CGRectGetHeight(cell!.frame))
               cell!.setNeedsLayout()
             cell!.layoutIfNeeded()
        var size = cell?.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
        size?.width = width
     return CGSize(width: width, height: size!.height)
    }

我的约束非常基本。我对每个轴都有约束。一个位于内容视图的顶部,前导,尾随和底部。我在标签上的高度大于或等于45.

使用自动布局来计算TableViewCell高度对我来说很容易,我喜欢它,因为我喜欢这种高度计算方法背后的DRY原理。所以我想在我的应用程序中保持这个高度计算过程相同。 CollectionViews对我来说是一个相对较新的布局过程,所以我很想知道我在这里做错了什么。希望我对每个人都很清楚,谢谢!

1 个答案:

答案 0 :(得分:1)

我明白了!我没做的是在我创建的自定义单元格上放置宽度约束!咄!