2017-01-19 14 views
9

は表示されません。スウィフト3:テンプレート画像と変更された色合いの色に設定したときにUIImageが、私はプログラム的にちょうどこのような資産からロードされた画像の色を変更しようスウィフト3では、画像

let imageView = UIImageView() 
    let image = UIImage(named: "imageFromAssets")?.withRenderingMode(.alwaysTemplate) 
    imageView.contentMode = .scaleAspectFit 
    imageView.tintColor = GREEN_UICOLOR // Change to custom green color 
    imageView.image = image 

下の画像は、正方形のブロックとして表示されます:

Template image with green tint that does not work

しかし、面白いことは、これは常に発生しませんです。資産のいくつかの他の画像と、それが動作し、緑の色合いに変更:

Template image with green tint that works

なぜ一貫性のない動作がここにありますか?一般に、テンプレートイメージをアセットに追加し、プログラムでその色を変更できるようにするにはどうすればよいですか?画像をテンプレート画像に変更しても機能しませんが、画像の色合いを変更したいので、できません。

+0

画像を確認するには、アルファとカラーで構成する必要があります – Andrea

答えて

15

テンプレート画像の場合、背景は透過的である必要があります。白ではありません。

8

テンプレート画像は、画像の不透明度プロパティを使用して動作します。

透明な背景の画像がある場合、透明な背景は透明のまま残り、残りの画像はすべて小さな色に変更されます。

画像に透明な背景がない場合。それは白い背景を持っていると言う。次に、イメージ全体が色合いの色に変更されます(例のように)。

これを修正するには、その画像に透明な背景を付ける必要があります。

また、そのコードは必要ありません。テンプレートモードでのみイメージを使用している場合は、アセットカタログでレンダリングモードを選択します。

関連する問題