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