以编程方式将UICollectionViewCell宽度设置为UICollectionView宽度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以编程方式将UICollectionViewCell宽度设置为UICollectionView宽度相关的知识,希望对你有一定的参考价值。

在集合视图中,我们如何根据整个集合视图设置宽度和高度的单元格大小。它将为小型到大型设备设置(例如:如果集合视图总宽度= 375.0000,我们将其分为3.因此它将为所有大型和小型设备设置)。

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

    NSLog(@"SETTING SIZE FOR ITEM AT INDEX %d", (int)indexPath.row);
    CGSize mElementSize = CGSizeMake(125, 125);
    return mElementSize;
}
答案

适用于手机和平板电脑(适用于所有屏幕)

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    {
        return CGSizeMake(self.view.frame.size.width/3, 125);

    }
    else
    {
        NSLog(@"width %f",self.view.frame.size.width);
        return CGSizeMake(self.view.frame.size.width/3, 150);
    }
}
另一答案

在代码中设置UICollectionViewDelegateFlowLayout方法

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{ 
    return CGSize(width:(collectionView.bounds.size.width/numberOfCellInRow), height:270)
} 

并且还在单元格的awakeFromNib()方法中添加这两行,以根据单元格大小更新单元格的约束。

override func awakeFromNib()
{ 
    self.contentView.autoresizingMask.insert(.flexibleHeight)
    self.contentView.autoresizingMask.insert(.flexibleWidth)
}

以上是关于以编程方式将UICollectionViewCell宽度设置为UICollectionView宽度的主要内容,如果未能解决你的问题,请参考以下文章

Swift3 - UICollectionViewCel 的 intrinsicContentSize 是 (-1, -1)

以编程方式将 UISearchBar 添加到普通 ViewController 中以编程方式添加的 UITableView

无法以编程方式将样式设置为 LinearLayout

以编程方式将按钮添加到导航栏

如何以编程方式将空间添加到任务控制?

以编程方式将“测试版”apk 升级为“生产”