検索バーでよく利用するUISearchBarを自分で指定したbackgroundカラーにカスタマイズする方法です。
単純に、以下のように記述するとなぜか反映されません。
searchBar.backgroundColor = UIColor.yellow
また、barTintColorを変更するとbackgroundカラーは変更されますが、borderは残ったままになります。
searchBar.barTintColor = UIColor.yellow
そこで色々調べてみたところ、UISearchBarにはbackgroundImageが設定されているというのがわかりました。
UISearchBarBackgroundという、独自のクラスのようです。
そのため、このbackgroundImageを削除してみると無事にbackgroundColorをカスタマイズすることができました。
let barImageView = searchBar.value(forKey: "_background") as! UIImageView
barImageView.removeFromSuperview()
searchBar.backgroundColor = UIColor.yellow
同様に "value(forKey: )" を利用すればTextFieldの取得もできます。
let textField = searchBar.value(forKey: "_searchField") as! UITextField
textField.backgroundColor = UIColor.blue
textFieldを取得すれば後は、textFieldの設定を変更してカスタマイズすることができます。
ちなみにこのkeyはデバッグで内容を知ることができます。