Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 添加约束后,具有UICollectionViewDelegateFlowLayout的UIcollectioncell不应用高度和宽度_Ios_Swift_Uicollectionview_Uicollectionviewcell - Fatal编程技术网

Ios 添加约束后,具有UICollectionViewDelegateFlowLayout的UIcollectioncell不应用高度和宽度

Ios 添加约束后,具有UICollectionViewDelegateFlowLayout的UIcollectioncell不应用高度和宽度,ios,swift,uicollectionview,uicollectionviewcell,Ios,Swift,Uicollectionview,Uicollectionviewcell,我尝试使用UICollectionView将三个项目排成一行 extension DemoController : UICollectionViewDelegateFlowLayout { //1 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout,

我尝试使用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
    }
}
如果单元格是空的,或者如果我在里面放了一个视图,并且只在顶部或左侧添加约束,那么它可以正常工作 我得到的输出像

但是,如果在右侧和底部添加约束,单元的高度和宽度将不再有效


我哪里做错了?谢谢

UILabel具有自动调整大小的属性,即它采用内容的大小。因此,如果您试图为所有四个方面提供约束,那么最好在故事板上的约束属性中为
前导
顶部
以及
尾部
底部
提供约束之间的关系。这里有一个例子:


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

谢谢您的回答。当然,这与我的问题无关,但我还是尝试了你的解决方案,但它不起作用。