1. ホーム
  2. アイオス

[解決済み】カラーティント UIButton イメージ

2022-03-26 05:06:14

質問

白または黒を配置すると UIImage の中に UISegmentedControl は、分割されたコントロールの色合いに合わせて、自動的にカラーマスクします。これはとてもクールだと思ったので、他の場所でも同じことができないかと考えていました。たとえば、形は同じで色が異なるボタンがたくさんあります。各ボタンに PNG を作成する代わりに、このカラーマスキングを使用して、すべてのボタンに同じ画像を使用し、実際の色を変更するために色合いを設定することは可能でしょうか。

解決方法は?

iOS 7 からは UIImage を使用して、レンダリングモードを指定します。レンダリングモードを使用する UIImageRenderingModeAlwaysTemplate を指定すると、ボタンのティントカラーで画像の色を制御できるようになります。

Objective-C

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *image = [[UIImage imageNamed:@"image_name"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[button setImage:image forState:UIControlStateNormal]; 
button.tintColor = [UIColor redColor];

スウィフト

let button = UIButton(type: .custom)
let image = UIImage(named: "image_name")?.withRenderingMode(.alwaysTemplate)
button.setImage(image, for: .normal)
button.tintColor = UIColor.red