質問: UIButtonのImageにPDFのベクター画像を設定しています。 例えば、ホームボタンに家のアイコンが設定されていて、押せる状態の時は黒 押せないときは、グレー 選択されているときは、ピンク のようにしたいです。 状況に応じた画像をそれぞれ作成して、以下のように設定することもできますが、ベクター画像なので他の色で塗りつぶすことができたら、わざわざ複数の状態の画像を書き出さず一枚ですみます。 ``` button.setImage(UIImage.init(named: "button_image"), for: .selected) ``` そのようなことが可能でしたら、教えてください。
回答: > > PDFのベクター画像を設定しています。 > > > おそらくそれは誤解です。 AssetsCatalogを使ってPDFを設定している場合は、PNGファイルのようにコンバートされるだけでPDFのまま端末にコピーされることはありません。 (PDFファイルのままプロジェクトに組み込んでロードしているのでしたら話は別ですが見た感じそうではなさそうですので) さて本題ですが、AssetsCatalogを使っている場合、画像の詳細設定欄(?)でRender Asの設定をDefaultからTemplate Imageに変更してください。 !イメージ説明 これでこのイメージセットは、タブのように単色で描画されるようになります。 あとは、適切なタイミングでボタンのtintColorを設定してあげれば画像がその色になると思います。 (tintColorはstateごとに持てないので、そこを工夫してあげる必要はありそうです。)