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