UIButton禁用状态不会随调用super方法而改变

时间:2013-10-01 08:56:47

标签: ios uibutton

我正在使用自定义按钮,并且我想在没有图像的情况下禁用按钮的外观。 这是我正在使用的代码:

-(void)setEnabled:(BOOL)enabled
{
    [super setEnabled:enabled];
    if (enabled) {
        self.backgroundColor = UIColorFromRGB(0x961e1e);
        [[self layer] setBorderColor:[UIColorFromRGB(0x7d1919) CGColor]];
    }else{
        self.backgroundColor = UIColorFromRGBWithAlpha(0x751717,0.6);
        [[self layer] setBorderColor:[UIColorFromRGBWithAlpha(0x6e1616,0.6) CGColor]];
    }
}

如果我调用[super setEnabled:(BOOL)]方法,外观不会改变,但如果我没有调用,那么外观会改变,但按钮仍然是可点击的:/

欢迎任何想法。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

我最终用彩色创建图像,我在stackoverflow.com找到了解决这个问题的好方法:

+ (UIImage *) imageFromColor:(UIColor *)color {
    CGRect rect = CGRectMake(0, 0, 1, 1);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
} 

我将此作为UIImage的类别添加,然后我通过此方法使用我正在使用的颜色设置按钮背景图像。