【问题标题】:UINavigationBar LargeTitle , searchbar didn't workUINavigationBar 大标题,搜索栏不起作用
【发布时间】:2024-01-12 04:45:01
【问题描述】:

enter image description here

enter image description here

我想让它像下图一样,结果却像上图一样。

这是我的代码。

lazy var button = UIDropDownButton().then {
    $0.setAction().subscribe(onNext: {
        switch $0 {
        case .popularity: break
            // 인기순 정렬 코드
        case .suggestion: break
            // 추천순 정렬 코드
        case .lowestPrice: break
            // 최저가순 정렬 코드
        }
    })
    .disposed(by: disposeBag)
}

lazy var barButtonItem = UIBarButtonItem(customView: button)

override func viewDidLoad() {
    super.viewDidLoad()
    setNavigationBar()
}

override func viewWillAppear(_ animated: Bool) {
    setNavigationBar()
}

private func setNavigationBar() {
    setLargeTitleNavigationBar(title: "제품")
    self.navigationItem.rightBarButtonItem = barButtonItem
    let searchController = UISearchController(searchResultsController: nil)
    self.navigationItem.searchController = searchController
}

setLargeTitleNavigationBar 方法在这里。

extension UIViewController {

func setLargeTitleNavigationBar(title: String) {
    self.navigationController?.navigationBar.prefersLargeTitles = true
    self.navigationController?.setBackButon()
    self.navigationController?.navigationBar.backgroundColor = nil
    self.navigationController?.navigationBar.shadowImage = nil
    self.navigationController?.navigationBar.setBackgroundImage(nil, for: UIBarMetrics.default)
    self.navigationItem.title = title
}

我不知道如何解决这个问题。 我喜欢 Snapkit,但我可以阅读故事板。

【问题讨论】:

  • 为什么不使用scopeButtonTitles 作为搜索栏以获得更好的 UI/UX 而不是下拉菜单?

标签: swift uinavigationcontroller navigationbar snapkit preferslargetitles


【解决方案1】:

使用这个

navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.largeTitleDisplayMode = .always

【讨论】: