UISearchBar宽度在嵌入UINavigationBar时不会改变

时间:2014-11-03 20:37:11

标签: ios swift ios8 uisearchbar uisearchcontroller

我正在尝试在iOS 8中引入新的UISearchController API。虽然API是新的,但它使用相同的旧UISearchBar。我已将其添加到UINavigationController的{​​{1}}。

enter image description here enter image description here

titleView

我不需要搜索栏来获取导航栏的整个宽度。问题是我无法调整它的大小。首先,我尝试设置搜索栏的框架。

import UIKit

class ViewController: UIViewController, UISearchBarDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        let searchController = UISearchController(searchResultsController: nil)
        searchController.hidesNavigationBarDuringPresentation = false
        searchController.dimsBackgroundDuringPresentation = false
        searchController.searchBar.delegate = self
        navigationItem.titleView = searchController.searchBar
    }
}

这没用,所以我尝试设置searchController.searchBar.frame = CGRect(x: 0, y: 0, width: 100, height: 44) 的框架。

titleView

它们都不起作用。

有谁知道另一种方法吗?

谢谢。

1 个答案:

答案 0 :(得分:14)

您可以使用其他视图作为导航栏标题并在其中放置搜索栏。如果出现条纹色彩问题,可以通过设置backgroundImage属性来解决。这应该有效:

let searchController = UISearchController(searchResultsController: nil)
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.delegate = self

let frame = CGRect(x: 0, y: 0, width: 100, height: 44)
let titleView = UIView(frame: frame)
searchController.searchBar.backgroundImage = UIImage()
searchController.searchBar.frame = frame
titleView.addSubview(searchController.searchBar)
navigationItem.titleView = titleView