带有 UICollectionViewDelegateFlowLayout 的 UIcollectioncell 在添加约束后不应用高度和宽度

Posted

技术标签:

【中文标题】带有 UICollectionViewDelegateFlowLayout 的 UIcollectioncell 在添加约束后不应用高度和宽度【英文标题】:UIcollectioncell with UICollectionViewDelegateFlowLayout does not apply height and width after adding constraint 【发布时间】:2020-06-25 14:33:55 【问题描述】:

我尝试使用 UICollectionView 将三个项目连续放置

extension DemoController : UICollectionViewDelegateFlowLayout 
    
    //1
    func collectionView(_ collectionView: UICollectionView,
                        layout collectionViewLayout: UICollectionViewLayout,
                        sizeForItemAt indexPath: IndexPath) -> CGSize 
        //2
        let paddingSpace = sectionInsets.left  * (itemsPerRow + 1)
        let availableWidth = view.frame.width - paddingSpace
        let widthPerItem = availableWidth / itemsPerRow
        
        return CGSize(width: widthPerItem, height: widthPerItem)
    
    
    //3
    func collectionView(_ collectionView: UICollectionView,
                        layout collectionViewLayout: UICollectionViewLayout,
                        insetForSectionAt section: Int) -> UIEdgeInsets 
        return sectionInsets
    
    
    // 4
    func collectionView(_ collectionView: UICollectionView,
                        layout collectionViewLayout: UICollectionViewLayout,
                        minimumLineSpacingForSectionAt section: Int) -> CGFloat 
        return sectionInsets.left
    

如果单元格是空的,或者我在里面放一个视图并且只在顶部或左侧添加约束,就像 我得到像

但是,如果我在右侧和底部添加约束,单元格的高度和宽度将不再起作用。

我哪里做错了?谢谢

【问题讨论】:

【参考方案1】:

从我附加的图片中可以看出,您必须将集合视图的 Estimated Size 设置为,以便集合视图根据集合计算您的大小查看您定义的 FlowLayout,否则它将根据您的 UILabel 的大小计算集合视图的大小。

【讨论】:

【参考方案2】:

UILabel 具有自动调整大小的属性,即,它采用其内容的大小。因此,如果您尝试为所有四个方面提供约束,最好在约束中为 leadingtoplessThanOrEqualTo 提供约束之间的关系 trailingbottom故事板上的属性。举个例子:

【讨论】:

感谢您的回答。绝对与我的问题无关,但我仍然尝试了您的解决方案,但它不起作用。

以上是关于带有 UICollectionViewDelegateFlowLayout 的 UIcollectioncell 在添加约束后不应用高度和宽度的主要内容,如果未能解决你的问题,请参考以下文章

带有和不带有聚合的 sql 查询

如何翻转正面带有标签而背面带有另一个标签的视图 - 参见图片

CakePHP 如何处理带有/不带有 'id' 字段的 HABTM 表?

带有滚动的 Div 和带有绝对位置的内容

带有 RecyclerView 的 DialogFragment 比带有 Recyclerview 的 Fragment 慢

访问控制允许带有和不带有 www 的来源