首页
学习
活动
专区
工具
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
    }
}

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

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

相关·内容

iOS开发-搜索栏UISearchBar和UISearchController

最近项目中用到了搜索栏,所以在网上搜了一些相关的资料学习了一下,现在记录一下,iOS的搜索栏实现起来相对简单一点,网上也有很多参考资料,不过靠谱的不是很多,很多都是iOS 8.0之前的实现,iOS...8.0上的实现貌似很少看到,看了一些其他人的代码,使用了一下UISearchController感觉还是非常不错的。...,信息如下: 'searchDisplayController' is deprecated: first deprecated in iOS 8.0,这么明显一个警告总不能视而不见吧 ,也就是说 iOS...这个委托实现上面的效果; 视图中需要声明UISearchResultsUpdating: @interface ViewController : UITableViewController<UITableViewDelegate...= CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y

2.4K70
  • iOS 问题总结(五)

    使用 cocoapods 时,编译报错 在 Building Setting 的Other Linker Flags 检查是不是为空了,如果是那么添加一句 $(inherited),再重新编译就不会报错了...,苹果开发中心的demo的对这行代码,注释如下 // know where you want UISearchController to be displayed 如果不添加上面这行代码,在设置 hidesNavigationBarDuringPresentation...现在搜索栏没有发生偏移,但是导航栏却没有隐藏,于是我把 NO 改为了 YES,运行如下图: ? ? 结果还是发生了偏移。...然后我又把隐藏导航栏设置为了YES: _searchController.hidesNavigationBarDuringPresentation = YES; 搜索框就能正常显示了,如下图: ?...然后我又试着把隐藏导航栏的属性注释掉,然后运行,还是能够正常显示,下面是随后的代码: -(UISearchController *)searchController { if (_searchController

    1.6K10

    自定义UISearchController的外观

    以前我们在项目中使用搜索框的时候,如果用系统自带的控件则是使用UISearchDisplayController,而自从iOS8之后,系统重新给我们提供了一个搜索控件:UISearchController...在UISearchController我们无需再自己初始化UISearchBar,只需要提供searchResult展示的视图。...,代码充斥着各种写好的UISearchBar的展示,而改动底层框架并不是一个较好地实践。...SDK提供的UISearchBar,在iOS7之前是分为UISearchBarBackground、UISearchBarTextField、UIButton这几个类的实例组成,而在iOS7之后,是将...cancelButton时,一定要确保cancelButton包含在了UISearchBar,必要时可以提前调用: [_searchController.searchBar setShowsCancelButton

    1.7K20

    UINavigationController 导航控制器概念属性方法

    (通过navigationController. navigationBar方式可以调用) NavigationBar管理多个NavigationItem,和NavigationController一样都是用...(null_resettable,nonatomic,readonly) UIToolbar *toolbar; 8、获取导航的返回手势对象(iOS7之后,在导航右划会进行pop操作,设置这个的enable...@property (nonatomic, readwrite, assign) BOOL hidesBarsWhenVerticallyCompact; 13、敲击屏幕可以隐藏与显示导航栏 @property...,push后隐藏tabbar @property(nonatomic) BOOL hidesBottomBarWhenPushed; (3)获取管理它的导航控制器 @property(nullable...压入新的视图控制器 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; 这个方法是为了iOS

    2.1K60

    《手管iPhoneX的适配总结》

    https://developer.apple.com/videos/play/fall2017/201/) -> 主要提及SafeArea的概念以及横屏情况下的区域如何设计,还有TableView的SearchBar...适配 三、整理一下发型 将旧版本App塞满屏幕后,来到我们最关心的“刘海”问题了 见图可知,我们默认的StatusBar在iPhoneX也有了相对的调整,对于开发和布局设计(UI标注)也需要去注意这个问题...(注意使用接口需要iOS 11+系统,方法前请务必进行系统判断) SafeArea帮助我们将View设置在整个屏幕的可视化部分,即使把NavigationBar设置为透明的,系统也认为SafeArea...是从NavigationBar的bottom开始的。...SafeArea可以确保可视区域不被系统的状态栏、或俯视图提供的View(导航栏)覆盖。

    44920

    手机管家 iPhoneX 的适配总结

    List—— 一些官方必备要领的传送门: 官方说明 WWDC__Building Apps for iPhone X ->主要提及SafeArea的概念以及横屏情况下的区域如何设计,还有TableView的SearchBar...适配 三、整理一下发型 将旧版本App塞满屏幕后,来到我们最关心的“刘海”问题了 见图可知,我们默认的StatusBar在iPhoneX也有了相对的调整,对于开发和布局设计(UI标注)也需要去注意这个问题...(注意使用接口需要iOS 11+系统,方法前请务必进行系统判断) SafeArea帮助我们将View设置在整个屏幕的可视化部分,即使把NavigationBar设置为透明的,系统也认为SafeArea...是从NavigationBar的bottom开始的。...SafeArea可以确保可视区域不被系统的状态栏、或俯视图提供的View(导航栏)覆盖。

    1.5K00

    iOS开发——UINavigationBar踩过的坑

    自从升级了Xcode8,以及在做iOS10的适配工作,我发现在NavigationBar这个控件,有了一个小小的坑。...但是我这次发现,在我升级到iOS10之后,iOS10的设备虽然使用了以前的方法,但是还是出现了这个细线,但是iOS10以下的设备这条细线还是不存在的。...于是我自己得出了这么个结论,之前去除NavigationBar的这条细线的方法失效了(这里并不是说所有方法失效,至少我使用的方法是失效的),那么在发现自己有这个问题的时候,不妨可以来换一种方法实现隐藏NavigationBar...头文件的方法声明 /** * NavigationBar底部隐藏1px的线 */ - (void)lix_hideBottomHairline; /** * NavigationBar底部显示...底部线条的隐藏和显示,这样的代码可扩展性更好。

    92230

    【技巧】ionic3的小彩蛋

    ionic里面有不少彩蛋——就是官网没有说明,但是可以用的,因为一段时间没用ionic做项目,所以一时想不起来,先列几个: 一、众所周知的 软键盘出现搜索按钮 form标签包含ion-searchbar...解决非交互组件的点击延时 这类组件也是可以响应点击事件的,只是因为要判断是否有后续响应(判断是否双击),会有几百ms的延时,这时加上tappable即可 二、较为隐藏的 输入框内容支持复制黏贴...ion-input包含在ion-item里面即可,而且如果不包,在ios可能还会出现问题。...其实,我们只要取现有样式名,换掉后缀,并添加即可,ios平台ion-checkbox会生成checkbox-ios样式,一般只需给该控件加上checkbox-md类名即可变成android风格,因为它一般会覆盖原来的平台的样式..._beginRefresh(); } input相关组件的隐藏事件 像ion-searchbar、ion-input、ion-textarea等,都是有ionBlur、ionFocus、ionChange

    64350

    小程序bug

    记录下本人在写小程序时遇到的一系列难题与bug 菜单隐藏消失的动画效果(主要用了animation、transformX控制left的值),在设置wx-charts图表在菜单显示时隐藏,最后发现在安卓上正常运行...一般这样创建一个日期变量 var d = new Date("2017-08-11 12:00:00"); 发现在iOS不兼容,返回valid Date。...IOS不支持 - 连接日期需要写成 var d = new Date("2017-08-11 12:00:00".replace(/-/g, "/")); 这样来兼容ios,而且年月日都得传,比如不能传...小程序的cover-view组件有bug,比如本项目中要实现导航栏菜单遮住所在页面的多张图表时需放在最后一张图表的组件标签内部, <chart...小程序 自定义弹窗后禁止屏幕滚动(滚动穿透) 13. wx.navigateTo不能滥用,因为他会保存页面,小程序又有只能打开10个页面的限制,因此滥用可能导致导航跳转失效 14.

    87320
    领券