将subview带到前面

时间:2016-09-02 06:27:08

标签: ios objective-c uiview uicollectionview uicollectionviewcell

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

enter image description here

添加边框后:

enter image description here

我使用[self addSubview:self.badge];

子类中的UICollectionViewCell将徽章视图添加到单元格

我试过[self bringSubviewToFront:self.badge];self.badge.layer.zPosition = 1;,但没有帮助。我在SO上的类似帖子上找到了这些解决方案,但我认为我做错了。如果有人能指出这一点,我会很高兴。谢谢。

修改 我根据建议做了一些改动,并[self.contentView addSubview:self.badge];代替[self addSubview:self.badge];。当我调试视图并检查所有视图层时,它确实在边框顶部显示徽章,但在模拟器中不是这种情况。

3 个答案:

答案 0 :(得分:2)

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

尝试设置这些视图层次结构:

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

答案 1 :(得分: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]; 

答案 2 :(得分:0)

为徽章使用单独的CALayer。您似乎在同一层中绘制徽章和边框,因此合并了两个图像。