LoginSignup
6
4

More than 5 years have passed since last update.

UISearchBarの変なアニメーションを直す

Last updated at Posted at 2017-08-23

UISearchBarにあらかじめtextをセットしておいて表示したあと、clearボタンを押した時のplaceholderの表示のされ方が気持ち悪かったので修正した方法。

before

class ViewController: UIViewController {
    var searchBar: UISearchBar = {
        let searchBar = UISearchBar()
        searchBar.placeholder = "プレースホルダー"
        searchBar.text = "hogehoge"
        return searchBar
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(searchBar)
    }
}

左上から出てきてしまう。
placeholderのframeが{0,0,0,0}から虫眼鏡の左側に移動しているためこのようなアニメーションになってしまう。
before.gif
※わかりにくいのでスローアニメーションにしています。

after

class ViewController: UIViewController {
    var searchBar: UISearchBar = {
        let searchBar = UISearchBar()
        searchBar.placeholder = "プレースホルダー"

        // 文言をセットする前にこれを呼ぶ
        // これによりplaceholderの表示位置をあらかじめ通常の状態にする
        searchBar.layoutIfNeeded()

        searchBar.text = "hogehoge"
        return searchBar
    }()
}

若干左上から表示されるが最初よりはだいぶマシになった。
after.gif

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4