1. ホーム
  2. ios

[解決済み] iOSとWatchKitで画像のtintColorを変更する方法

2022-03-21 22:08:32

質問

UIImageViewというUIImageがあり、下の左の黒いハートのような単色(背景が透明)のUIImageを持っています。iOS 7以上のナビゲーションバーアイコンで使用されている色合いの方法と同様に、iOS 7以上でこの画像の色合いをプログラムで変更するにはどうしたらよいでしょうか?

この方法は、Apple WatchアプリのWatchKitでも使えるのでしょうか?

解決方法は?

iOS
iOSアプリの場合、Swift 3、4または5で。

theImageView.image = theImageView.image?.withRenderingMode(.alwaysTemplate)
theImageView.tintColor = UIColor.red

Swift 2の場合。

theImageView.image = theImageView.image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
theImageView.tintColor = UIColor.redColor()

一方、現代のObjective-Cによる解決策は。

theImageView.image = [theImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[theImageView setTintColor:[UIColor redColor]];


ウォッチキット
Apple WatchアプリのWatchKitでは、Apple Watchアプリに テンプレート画像の色合い .

  1. WatchKit App の Asset Catalog に画像を追加し、Attributes Inspector で Template Image としてレンダリングされるように画像セットを設定する必要があります。iPhoneアプリの場合と異なり、現在のところWatchKit Extensionでは、コードでテンプレートレンダリングを設定することはできません。
  2. アプリのインターフェースビルダーでWKInterfaceImageにその画像を設定します。
  3. WKInterfaceController に 'theImage' という WKInterfaceImage 用の IBOutlet を作成する...

その後、Swift 3または4で色合いを設定する。

theImage.setTintColor(UIColor.red)

Swift 2:

theImage.setTintColor(UIColor.redColor())

次に、Objective-Cで色合いを設定します。

[self.theImage setTintColor:[UIColor redColor]];

テンプレート画像を使用し、色合いを適用しない場合、WatchKitアプリのGlobal Tintが適用されます。Global Tint を設定していない場合。 theImage は、テンプレート画像として使用された場合、デフォルトでライトブルーに着色されます。