2017-11-07 18 views
0

画像を設定せずにUIButtonの画像ビューの背景色を変更するにはどうすればよいですか? (例えば、ボタンのテキストの隣に赤い四角形があるように)。UIButton:画像ビューの背景を設定する(画像を設定しない)

私は単にmybutton.imageView.backgroundColor = UIColor.redと設定し、画像ビューの制約を28x28pxに設定します。私は赤い広場を見ません。

ありがとうございました。

明確にする:UIButtonの画像ビューの背景色を設定したい - ボタン全体を色づけしたくない!

+0

たとえばhttps://stackoverflow.com/questions/41545599/how-to-change-tintcolor-of-image-in-uibutton-with-imageedgeinsetsをご覧ください。 –

+1

@Pascal完璧な解決策ではありませんが、 UIView内のテキストとイメージの上に空白のUIButtonが追加されます。 –

+0

ボタンに透明な画像を設定するとうまくいくはずです.... –

答えて

1

あなたの質問にSwiftObjective-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に設定されている、または画像が「着色」されることを確認してください。

+0

ええ私は両方の言語でタグ付けしました。これは翻訳が容易で、いずれかの回答がうまくいくでしょう:)あなたの応答に感謝します。これを実行するオプションがないようです画像を設定するので、あなたのアプローチのような*疑似画像*を使用すると、最良のアプローチであるようです – Pascal

0
Use this code. 
UIButton *button =[[UIButton alloc]initWithFrame:CGRectMake(85, 290,110,20)]; 
button.layer.cornerRadius = ROUND_BUTTON_WIDTH_HEIGHT/2.0f; 
button.backgroundColor = [UIColor redColor]; 
button.titleLabel.textAlignment = NSTextAlignmentCenter; 
button.titleLabel.font = [UIFont systemFontOfSize:11.0]; 
[button setTitle:@"Download" forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(downloadBtnClicked:)forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:button]; 
+1

ボタンではなく、画像ビューの背景色を変更するように求めています。 –

0

独自のカスタムUIButtonを行う必要があります。別の解決策は、IBの利用可能なオプションを使用してデフォルトのものを調整することです。

UIButton Image + Text IOS

0

UIButton * _button = [UIButton buttonWithType:UIButtonTypeCustom]。

[_button setFrame:CGRectMake(0.f、0.f、128.f、128.f)]; //希望する値を設定します。

[_button setCenter:CGPointMake(128.f、128.f)]; //あなたの望む値を設定します。

[_button setClipsToBounds:false];

[_button setBackgroundImage:[UIImage imageNamed:@ "jquery-mobile-icon.png"] forState:UIControlStateNormal]; //希望する画像名を設定します。

[_button setTitle:@ "Button" forState:UIControlStateNormal];

[_button.titleLabel setFont:[UIFont systemFontOfSize:24.f]];

[_button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; //希望する色を設定します

[_button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; //希望する色を設定します

[_button setTitleEdgeInsets:UIEdgeInsetsMake(0.f、0.f、-110.f、0.f)]; //希望する値を設定します。

[_button addTarget:自己アクション:@selector(buttonTouchedUpInside :) forControlEvents:UIControlEventTouchUpInside]; //ボタンにアクションを追加することもできます

関連する問題