1

我遇到了一个问题,我想将徽标通知视图添加到前面的UICollectionViewCell。我正在使用cell.layer.borderColor = [[UIColor redColor]CGColor]; UICollectionViewCell添加边框。但是当添加边框时,它会出现在徽章视图的顶部。将子视图带到前面

enter image description here

我在子类UICollectionViewCell

我试过了,[self bringSubviewToFront:self.badge];self.badge.layer.zPosition = 1;类使用,[self addSubview:self.badge]; 徽章视图添加到单元格:

enter image description here

添加边框之后但它没有帮助。我在类似的帖子上发现了这些解决方案,但我认为我做错了什么。如果有人能指出这一点,我会很高兴。谢谢。

编辑 我根据建议做了一个小的变化,并没有[self.contentView addSubview:self.badge];而不是[self addSubview:self.badge];。当我调试视图并检查所有视图层时,它确实在边框上显示徽章,但那不是模拟器中的情况。

+0

这是因为您正在将徽章添加到您正在应用边框的相同视图中,只需添加另一个视图,而不是在主视图中应用边框。 – iphonic

+0

但是在这种情况下,bringSubviewToFront仍然可以正常工作,对吧? – TKutal

+0

尝试设置'cell.layer.borderWidth',也许这可以帮助你的边界。 –

回答

2

正如@iphonic所说,你无法使用相同的视图来绘制边框并包含徽章。

尝试设置这些视图层次:

Cell 
    |- ContentView 
     |- Main View (Apply border here) 
     |- All you content 
     |- Badge 
0

您可以创建一个特定的子视图为您定制UICollectionViewCell的边界,所以当你需要使它出现,那么你就可以轻松地管理把徽章到前面。

编程它可能是这样的(在自定义UICollectionViewCell

UIView* border = [[UIView alloc] initWithFrame:cell.frame]; 
border.tag = 1001; 
border.layer.borderColor = [[UIColor redColor]CGColor]; 
[self addSubview:border]; 

而当你需要添加和显示徽章前期

[self addSubview:self.badge]; 
[self bringSubviewToFront:[self viewWithTag:1001]]; 
[self bringSubviewToFront:self.badge]; 
0

使用的徽章单独的CALayer。看起来您正在同一图层中绘制徽章和边框,因此合并了这两个图像。

+0

请检查编辑。 – TKutal

+0

出于纯粹的兴趣,当您将badgeView的backgroundColor设置为纯色时发生了什么? –

+0

边框出现在徽章上,我不知道为什么会发生这种情况,因为在“视图调试”中徽章显然是在边界之上。 – TKutal