无法在 UICollectionView 单元格上创建底部边框

Unable to create bottom border on UICollectionView Cell

我需要为我的 UICollectionView 单元格添加一个 1px 的底部边框,但我无法让它工作,我尝试了以下代码,但边框没有显示:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];


    // Configure the cell
    cell.backgroundColor = [UIColor whiteColor];
    cell.titolo.text = arrayt[prova];

    //create the border
    UIView *bottomBorder = [[UIView alloc] initWithFrame:CGRectMake(0, cell.frame.size.height, cell.frame.size.width, 1)];
    bottomBorder.backgroundColor = [UIColor redColor];

    [cell.contentView addSubview:bottomBorder];


    return cell;
}

可能是什么问题?

CGRectMake 获取 (x,y,width,height) 作为参数,所以我无法理解我的代码有什么问题

在像这样添加子视图之前,您应该将单元格的框架设置为已知的(不是零大小)值。然后,在使用正确的框架创建视图后,您需要设置自动调整大小掩码以确保视图保持在视图的底部(灵活的顶部,灵活的宽度)。

您需要有正确的 y 偏移量

//create the border
    UIView *bottomBorder = [[UIView alloc] initWithFrame:CGRectMake(0, cell.frame.size.height - 1, cell.frame.size.width, 1)];
    bottomBorder.backgroundColor = [UIColor redColor];

这不是解决这个问题的方法,UIInsets 是更好的方法,如 post: 所示。但如果你仍然想按照这种方式进行,则需要在之后删除这些视图,否则它们将一直添加到 UICollectionViewCell 中。考虑到您也有 UIImageView 作为子视图:

UIView *bottomBorder = [[UIView alloc] initWithFrame:CGRectMake(0, cell.frame.size.height - 1, cell.frame.size.width, 1)];
bottomBorder.backgroundColor = [UIColor colorWithRed:162/255.0f green:143/255.0f blue:143/255.0f alpha:1.0f];

for(UIView *view in cell.contentView.subviews){
    if([view isKindOfClass:NSClassFromString(@"UIImageView")])
        continue;
    else{
        [view removeFromSuperview];
    }
}

[cell.contentView addSubview:bottomBorder];