【Swift4】UIBarButtonItemの画像の色が変になる時はRenderingModeを指定しよう【Objective-C】
UINavigationControllerなどのナビゲーションバーに画像付きのUIBarButtonItemでボタンをつけた時に色が変になる問題が発生します。iOS7以降「RenderingMode」というのを指定しないと「[UINavigationBar appearance].tintColor」などで指定しているtintColorの色に塗りつぶされ てしまいます。
Swift4
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "hoge2.png")?.withRenderingMode(.alwaysOriginal),
style: .plain,
target: self,
action: #selector(hoge));
Objective-C
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"hoge.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
style:UIBarButtonItemStylePlain
target:self
action:@selector(hoge)];
UIImageのRenderingModeに「UIImageRenderingModeAlwaysOriginal」を指定することでちゃんと色が乗るようになります。