UISearchBar宽度embedded在UINavigationBar内时不会更改
我正在尝试UISearchController
引入的新的UISearchController
API。虽然API是新的,它使用相同的旧UISearchBar
。 我将它添加到UINavigationController
的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 } }
我不需要search栏来获取导航栏的整个宽度。 问题是我无法调整它。 首先,我尝试设置search栏的框架。
searchController.searchBar.frame = CGRect(x: 0, y: 0, width: 100, height: 44)
这不起作用,所以我试图设置titleView
的框架。
navigationItem.titleView!.frame = CGRect(x: 0, y: 0, width: 100, height: 44)
他们都没有工作。
有谁知道另一种方式来做到这一点?
谢谢。
您可以使用另一个视图作为导航栏标题,并在其中放置search栏。 如果出现色块颜色问题,可以通过设置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