面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

UIBarButtonItemで画像の見たを変えずに使用するやり方

UIBarButtonItem

UIBarButtonItemは、UINavigationControllerとかと併せてよく使うButtonですが、そのまま使用すると下記のように透過じゃない部分は単色でTint Colorによって塗りつぶされます。

f:id:aryzae:20180211211616p:plain
この画像を使用すると…

f:id:aryzae:20180211211808p:plain
こうなる

これを画像を加工せずそのまま表示したいと思ったので、いいやり方ないか調べた際のメモです。

init(customView:)を使う

UIBarButtonIteminit(customView:)という初期化方法にUIButtonを設定することで簡単に実現できる。

流れとしては、

  1. Storyboardで、UIButtonを用意する
  2. IBOutletで紐づける
  3. そのButtonを使用してコードでUIBarButtonItemを作成する
  4. UIBarButtonItemをセットする

f:id:aryzae:20180211212238p:plain

そうすると、このようになる、

f:id:aryzae:20180211212353p:plain

このやり方のメリットとして、StoryboardのUIButtonからIBActionを設定できるのでaddTargetとかを使って#selectorで押下時の挙動を設定してあげる必要がない。

Storyboardを使わない場合

この場合、コードでUIButtonを生成して同じようにUIBarButtonIteminit(customView:)でセットしてあげればよい。