首页 > 解决方案 > bringSubviewToFront 不适用于自定义按钮的子视图

问题描述

我有一个自定义按钮,该按钮使用顶角的自定义图像进行了初始化。我无法将该图像视图带到前面;

在此处输入图像描述 等级制度; 在此处输入图像描述

使用徽章初始化为;

- (instancetype)initWithCoder:(NSCoder *)coder{
    self = [super initWithCoder: coder];
    if (self) {
        self.imageEdgeInsets = UIEdgeInsetsMake(0, -14, 0 , 0);
        _checkedBagde = [[UIImageView new]initWithImage:[UIImage imageNamed:@"checkedBadge"]];
        _checkedBagde.frame = CGRectMake(-10, -5, 24, 15);
        [self addSubview:_checkedBagde];
        [self bringSubviewToFront: _checkedBagde];
    }
    return self;
}

在视图控制器上,我使用下面的函数(在 viewWillAppear 中)来设置在按钮类中声明的自定义按钮。

- (id)setButton:(DayButtonStates)buttonType
   relatedArray:(NSArray *)relatedArray
    isCompleted:(BOOL)isCompleted{
    
    if (self) {
        [_checkedBagde setHidden: isCompleted ? NO : YES];
        //[self setTitle: relatedArray.title forState: normal];
        self.layer.cornerRadius = 4;
        self.relatedArray = relatedArray;
        switch (buttonType) {
            case activeRemoteButton:
                [self setActiveRemoteButton:self];
                break;
            case passiveRemoteButton:
                [self setPassiveRemoteButton:self];
                break;
            case activeOnSiteButton:
                [self setActiveOnsiteButton:self];
                break;
            case passiveOnSiteButton:
                [self setPassiveOnsiteButton:self];
                break;
        }
    }
    return self;
}

例如,setPassiveOnsiteButton 函数如下:

- (void)setPassiveOnsiteButton {
    [self setButtonType:passiveOnSiteButton];
    UIImage *passiveOnsiteIcon = [UIImage imageNamed:@"iconBusP"];
    self.layer.borderWidth = 1;
    [self bringSubviewToFront: self.checkedBagde];
    self.layer.borderColor = [RGB(63, 206, 193) CGColor];
    self.backgroundColor = RGB(54, 54, 54);
    [self setSelected:NO];
    [self setImage: passiveOnsiteIcon forState:UIControlStateNormal];
    [self setTitleColor: RGB(63, 206, 193) forState:UIControlStateNormal];
}

正如您在第一张图片中看到的,按钮层显示在前面。因为在将徽章放在前面后将边框分配给按钮。我怎样才能将相关的边界寄回?谢谢你。

标签: iosobjective-cviewhierarchy

解决方案


推荐阅读