Ios UIButton:设置图像视图的背景(不设置图像)

Ios UIButton:设置图像视图的背景(不设置图像),ios,uibutton,uikit,Ios,Uibutton,Uikit,如何在不设置图像的情况下更改UIButton上图像视图的背景色?例如,我在按钮文本旁边有一个红方块 当我简单地设置mybutton.imageView.backgroundColor=UIColor.red并将图像视图的约束设置为28x28px时。我看不到红场 谢谢 澄清一下:我只想在UIButton上设置图像视图的背景色-我不想给整个按钮上色 你应该做你自己的自定义按钮。另一个解决方案是尝试使用IB可用选项调整默认选项 UIButton*_button=[UIButton button类型:U

如何在不设置图像的情况下更改UIButton上图像视图的背景色?例如,我在按钮文本旁边有一个红方块

当我简单地设置mybutton.imageView.backgroundColor=UIColor.red并将图像视图的约束设置为28x28px时。我看不到红场

谢谢

澄清一下:我只想在UIButton上设置图像视图的背景色-我不想给整个按钮上色


你应该做你自己的自定义按钮。另一个解决方案是尝试使用IB可用选项调整默认选项


UIButton*_button=[UIButton button类型:UIButtonTypeCustom]

[_buttonsetframe:CGRectMake0.f,0.f,128.f,128.f];//为你的愿望设定价值

[_buttonsetcenter:CGPointMake128.f,128.f];//为你的愿望设定价值

[_按钮设置ClipsToBounds:false]

[\u按钮setBackgroundImage:[UIImage ImageName:@jquery-mobile-icon.png]用于状态:UIControlStateNormal];//为您的愿望设置图像名称

[\u按钮设置标题:@按钮状态:UIControlStateNormal]

[\u button.titleLabel setFont:[UIFont systemFontOfSize:24.f]]

[_按钮设置标题颜色:[UIColor blackColor]用于状态:UIControlStateNormal];//为你的愿望定下颜色

[\u按钮设置标题颜色:[UIColor redColor]用于状态:uicontrol状态高亮显示];//为你的愿望定下颜色

[_按钮设置标题插入:UIEdgeInsetsMake0.f,0.f,-110.f,0.f];//为你的愿望设定价值


[_按钮添加目标:自我操作:@SelectorButtoTouchDupInside:forControlEvents:UIControlEventTouchUpInside];//您可以将操作添加到按钮,就像您将问题标记为Swift和OBJECT-C一样,因此

在Swift中,您可以使用此扩展创建具有特定颜色的空白图像:

public extension UIImage {
    public convenience init?(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) {
        let rect = CGRect(origin: .zero, size: size)
        UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)
        color.setFill()
        UIRectFill(rect)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        guard let cgImage = image?.cgImage else { return nil }
        self.init(cgImage: cgImage)
    }
}
然后,要在按钮文本旁边添加一个红方块:

    let btnImage = UIImage(color: .red, size: CGSize(width: 28, height: 28))
    btn.setImage(btnImage, for: .normal)
如果您需要在Obj-C中执行此操作,则流程相同:

- (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)sz {
    CGRect rect = CGRectMake(0.0f, 0.0f, sz.width, sz.height);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}


注意:确保您的UIButton类型设置为Custom,否则图像将被着色。

例如,请参阅此@Pascal不是完美的解决方案,但您可以尝试在UIView中添加文本和图像,并在其上方添加空白UIButton。将透明图像设置为button应该可以工作……他要求更改imageview的背景色,不是按钮。是的,我用两种语言标记了它,因为很容易将一种语言翻译成另一种语言,我对其中任何一种语言的答案都很满意:谢谢你的回答,看起来在没有设置图像的情况下完成这项工作是没有选择的,因此,在你的方法中使用伪图像似乎是最好的方法
    let btnImage = UIImage(color: .red, size: CGSize(width: 28, height: 28))
    btn.setImage(btnImage, for: .normal)
- (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)sz {
    CGRect rect = CGRectMake(0.0f, 0.0f, sz.width, sz.height);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}
    UIImage *btnImage = [self imageWithColor:[UIColor redColor] andSize:CGSizeMake(28.0, 28.0)];
    [_btn setImage:btnImage forState:UIControlStateNormal];