首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS 13如何在navigationBar中隐藏UISearchController searchBar

在iOS 13中,可以通过以下步骤在navigationBar中隐藏UISearchController的searchBar:

  1. 创建一个UISearchController对象,并将其设置为你的视图控制器的属性。
  2. 将UISearchController的searchBar属性设置为nil,以隐藏搜索栏。
  3. 将UISearchController的hidesNavigationBarDuringPresentation属性设置为true,以确保在搜索时隐藏导航栏。
  4. 将UISearchController的obscuresBackgroundDuringPresentation属性设置为false,以确保在搜索时不模糊背景。

以下是一个示例代码:

代码语言:txt
复制
import UIKit

class ViewController: UIViewController, UISearchControllerDelegate {
    var searchController: UISearchController!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        searchController = UISearchController(searchResultsController: nil)
        searchController.searchBar.placeholder = "Search"
        searchController.searchBar.delegate = self
        
        // 隐藏搜索栏
        searchController.searchBar.isHidden = true
        
        // 在搜索时隐藏导航栏
        searchController.hidesNavigationBarDuringPresentation = true
        
        // 在搜索时不模糊背景
        searchController.obscuresBackgroundDuringPresentation = false
        
        navigationItem.searchController = searchController
        navigationItem.hidesSearchBarWhenScrolling = false
    }
}

extension ViewController: UISearchBarDelegate {
    func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
        // 显示搜索栏
        searchController.searchBar.isHidden = false
    }
}

这样,当用户点击导航栏上的搜索按钮时,搜索栏将会显示出来,并且导航栏会自动隐藏。用户可以在搜索栏中输入关键字进行搜索。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

自定义UISearchController的外观

以前我们在项目中使用搜索框的时候,如果用系统自带的控件则是使用UISearchDisplayController,而自从iOS8之后,系统重新给我们提供了一个搜索控件:UISearchController。在UISearchController中我们无需再自己初始化UISearchBar,只需要提供searchResult展示的视图。然而在开发中,我们往往需要根据项目的风格来改变UISearchBar的外观,通过继承的方式,我们可以完全定制符合项目风格的外观,然而有些情况下我们很难短时间内完成全部的外观定制工作,譬如我们项目用的好几个旧框架,代码中充斥着各种写好的UISearchBar的展示,而改动底层框架并不是一个较好地实践。于是我开始搜索并总结出了几个不通过继承的方式来更改UISearchBar外观的方法。

02
  • 领券