UIButtonにsetImage()したけど画像の色が違う
UIButtonを画像にしたい+.normal
と.selected
で画像を切り替えたいと思った時に躓きました。
● 実装(Rx使ってます)
private func setButton() {
button.setImage(R.image.grayCat(), for: .normal)
button.setImage(R.image.purpleCat(), for: .selected)
button.rx.tap.bind(to: buttonTapBinder).disposed(by: disposeBag)
}
private var buttonTapBinder: Binder<()> {
return Binder(self) { base, _ in
base.button.isSelected = !base.button.isSelected
}
}
● 使った画像
実行画面
ボタンタップしたレイアウトもちがーーーーーーーーーーーう!!!!
解決策
私は普段.xib
ファイルで部品の配置とAutlayoutの設定をしているのですが、その際のButtonType
が原因でした。
これをCustom
にすれば解決です!
このButtonType
はget-only
なのでコードからは変更できません。
ちなみにレイアウト系もコードで実装している場合は、初期値がCustom
なので特に問題はないです。