我正在尝试在iOS 8中引入新的UISearchController
API。虽然API是新的,但它使用相同的旧UISearchBar
。我已将其添加到UINavigationController
的{{1}}。
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
它们都不起作用。
有谁知道另一种方法吗?
谢谢。
答案 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