小编典典

如何以编程方式设置UICollectionViewCell宽度和高度

swift

我正在尝试实施一个CollectionView。当我使用“自动布局”时,单元格不会更改大小,而是对齐。

现在我想将其大小更改为例如

//var size = CGSize(width: self.view.frame.width/10, height: self.view.frame.width/10)

我尝试设置 CellForItemAtIndexPath

collectionCell.size = size

虽然没有用。

有没有办法做到这一点?

编辑

看来,答案只会改变我的CollectionView宽度和高度本身。约束中可能存在冲突吗?有什么想法吗?


阅读 964

收藏
2020-07-07

共1个答案

小编典典

使用此方法设置自定义像元高度宽度。

确保添加此协议

UICollectionViewDelegate

UICollectionViewDataSource

UICollectionViewDelegateFlowLayout

如果您使用的是 swift 5xcode 11 及更高版本,则需要设置Estimate Sizenone使用情节提要以使其正常运行。如果您未设置,则下面的代码将无法正常工作。

在此处输入图片说明

Swift 4或更高版本

extension YourViewController: UICollectionViewDelegate {
    //Write Delegate Code Here
}

extension YourViewController: UICollectionViewDataSource {
    //Write DataSource Code Here
}

extension YourViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: screenWidth, height: screenWidth)
    }
}

目标C

@interface YourViewController : UIViewController<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    return CGSizeMake(CGRectGetWidth(collectionView.frame), (CGRectGetHeight(collectionView.frame)));
}
2020-07-07