如何将搜索栏添加到导航栏

How to add a search bar to the navigation bar

我想在我的导航栏右侧添加一个由 UISearchController 管理的搜索栏。

    searchController.searchResultsUpdater = self
    searchController.dimsBackgroundDuringPresentation = false
    definesPresentationContext = true
    searchController.searchBar.placeholder = "Search"
    searchController.searchBar.searchBarStyle = .Minimal
    searchController.searchBar.frame = CGRect(x: 0, y: 0, width: 200.0, height: 44.0)
    searchController.hidesNavigationBarDuringPresentation = false
    navigationItem.rightBarButtonItem = UIBarButtonItem(customView: searchController.searchBar)

当我点击搜索栏(使其变为活动状态)时,它会覆盖整个导航栏(同时覆盖其他所有内容)而不是一小部分。我该如何修复它的框架?

将搜索栏包裹在 UIView 中似乎可以解决问题。

    searchController.searchBar.frame = CGRect(x: 0, y: 0, width: 200.0, height: 44.0)
    let barContainer = UIView(frame: searchController.searchBar.frame)
    barContainer.backgroundColor = UIColor.clearColor()
    barContainer.addSubview(searchController.searchBar)
    navigationItem.rightBarButtonItem = UIBarButtonItem(customView: barContainer)