UIImageのレンダリング

UIImageにはwithRenderingModeというプロパティが用意されています。

UIButtonなどでSystemのものを使ってハイライトなどを行いたい時に青く変色してしまうのはこのレンダリングの指定が問題です。

今回は、以下の僕のアイコン画像を使ってレンダリングモードでどのように表示されるかを検証してみます。

レンダリングモードの記述

レンダリングモードの指定方法はとても簡単で、以下のように作成したUIImageに対して指定してあげることで適応されます。

UIImage(named: "harumi")?.withRenderingMode(.適応させたいレンダリングモード)

automatic

基本的にこのパラメータを使用することはあまりないような気がしますが、デフォルトのもので表示するというパラーメータです。

UIImage(named: "harumi")?.withRenderingMode(.automatic)

alwaysTemplate

このパラメータは一色のtintカラーで画像を表示するというものです。デフォルトが青なので何も指定しないと青一色に表示されます。

UIImage(named: "harumi")?.withRenderingMode(.alwaysTemplate)

alwaysOriginal

このパラメータは元画像の色を使用するというものです。UIButtonのSystemButtonや、UINavigationItemの画像の色などが青一色担ってしまう場合はこのパラメータをしていたUIImageを入れることで治ります。

UIImage(named: "harumi")?.withRenderingMode(.alwaysOriginal)