あなたの質問にSwift
とObjective-C
の両方のタグを付けました。スウィフトは
、あなたは特定の色で「空白」の画像を作成するには、この拡張機能を使用することができます:「ボタンのテキストの隣に赤い四角」を追加する、そして、
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;
}
と
UIImage *btnImage = [self imageWithColor:[UIColor redColor] andSize:CGSizeMake(28.0, 28.0)];
[_btn setImage:btnImage forState:UIControlStateNormal];
注:UIButton
タイプがCustom
に設定されている、または画像が「着色」されることを確認してください。
たとえばhttps://stackoverflow.com/questions/41545599/how-to-change-tintcolor-of-image-in-uibutton-with-imageedgeinsetsをご覧ください。 –
@Pascal完璧な解決策ではありませんが、 UIView内のテキストとイメージの上に空白のUIButtonが追加されます。 –
ボタンに透明な画像を設定するとうまくいくはずです.... –