无法在UICollectionView Cell上创建底部边框

时间:2015-03-03 14:22:56

标签: objective-c uicollectionview uicollectionviewcell

我需要在我的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)作为参数获取,这样我就无法理解代码中的错误

3 个答案:

答案 0 :(得分:3)

您需要具有正确的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];

答案 1 :(得分:1)

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

答案 2 :(得分:0)

这不是解决此问题的方法,UIInsets是更好的方法,如本文所示:https://stackoverflow.com/a/22823146/12652。但是如果您仍然希望遵循这种方式,则需要在之后删除这些视图,否则它们将不断添加到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];