Help us understand the problem. What is going on with this article?

【iOS】UISearchBarのbackgroundカラーを変更する

More than 3 years have passed since last update.

検索バーでよく利用するUISearchBarを自分で指定したbackgroundカラーにカスタマイズする方法です。

単純に、以下のように記述するとなぜか反映されません。

searchBar.backgroundColor = UIColor.yellow

changeBackground.png

また、barTintColorを変更するとbackgroundカラーは変更されますが、borderは残ったままになります。

searchBar.barTintColor = UIColor.yellow

barTintColor.png

そこで色々調べてみたところ、UISearchBarにはbackgroundImageが設定されているというのがわかりました。
UISearchBarBackgroundという、独自のクラスのようです。

そのため、このbackgroundImageを削除してみると無事にbackgroundColorをカスタマイズすることができました。

let barImageView = searchBar.value(forKey: "_background") as! UIImageView
barImageView.removeFromSuperview()

searchBar.backgroundColor = UIColor.yellow

removeImage.png

同様に "value(forKey: )" を利用すればTextFieldの取得もできます。

let textField = searchBar.value(forKey: "_searchField") as! UITextField

textField.backgroundColor = UIColor.blue

textField.png

textFieldを取得すれば後は、textFieldの設定を変更してカスタマイズすることができます。

ちなみにこのkeyはデバッグで内容を知ることができます。

searchBarKey.png

nadioo
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away