CollectionViewCell的自动布局:尾随/前导约束会更改单元格大小

问题描述

我只是不熟悉Xcode中的自动布局。当我为页眉堆栈视图,底部堆栈视图或它们之间的图像设置尾随和前导约束时,单元格的大小(高度/宽度)将发生变化。为什么会发生,如何避免呢?我认为我构建布局的那种方式不合适。非常感谢您的帮助。

我使用以下代码设置单元格大小:

extension MainVC: UICollectionViewDelegateFlowLayout {
    
    func collectionView(_ collectionView: UICollectionView,layout collectionViewLayout: UICollectionViewLayout,sizeforItemAt indexPath: IndexPath) -> CGSize {

        let height = view.frame.size.height
        let width = view.frame.size.width

        return CGSize(width: width * 0.42,height: height * 0.3)
    }

}

我的单元格布局:

enter image description here

这是我使用约束作为底部堆栈视图时应用程序的外观。

enter image description here

这是无约束底部堆栈视图(正确的单元格大小)。

enter image description here

解决方法

单元格现在可以使用自动布局自动调整大小,而忽略您在collectionView(_:layout:sizeForItemAt:)中返回的内容。如果要使用collectionView(_:layout:sizeForItemAt:),请在情节提要中将Estimate size更改为Nonehttps://stackoverflow.com/a/58369142/14351818