BringSubviewToFront不适用于自定义按钮的子视图

问题描述

我有一个自定义按钮,该按钮在上角用的自定义图片初始化。 我无法将该图像视图置于最前面;

enter image description here

层次结构;

enter image description here

将徽章初始化为;

- (instancetype)initWithCoder:(NSCoder *)coder{
    self = [super initWithCoder: coder];
    if (self) {
        self.imageEdgeInsets = UIEdgeInsetsMake(0,-14,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,193) forState:UIControlStatenormal];
}

如您在第一张图片中所见,按钮层显示在最前面。 因为在带徽章之前将边框分配给按钮。如何将相关边界发回? 谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)