如何让 TableView 中的 SearchBar 看起来像设置应用程序中的那样

     2023-03-04     24

关键词:

【中文标题】如何让 TableView 中的 SearchBar 看起来像设置应用程序中的那样【英文标题】:How do I get a SearchBar in a TableView to look like the one in the Settings App 【发布时间】:2018-04-09 20:31:26 【问题描述】:

在我的应用程序中,我有一个可搜索的 TableView,顶部有一个 SearBar。我添加了 SearchBar,通过 Interface Builder 将一个拖入,然后将我的 TableView 设置为 UISearchBarDelegate 并添加:

searchBar.delegate = self

这会产生以下外观

我想要的是我的 SearchBar 看起来像设置应用程序中的那个(每个 iOS 设备上预装的那个)

此外,单击时,它的行为有所不同,因为它会使视图的其余部分变灰并删除此处所示的标题

而我的 SearchBar 只打开键盘并在点击时显示光标。

我需要做什么才能实现这种特定的外观和感觉?

【问题讨论】:

您需要先将搜索栏控制器设置为navigationItem - UINavigationItem#searchController 也许Large Title and Search in iOS 11 和/或Large Titles For Navigation Bars In iOS 11 可以提供帮助 【参考方案1】:

您可以通过以编程方式将 UISearchController 添加到 navigationBar 来轻松完成。使用代码创建 UISearchController :

let controller = UISearchController(searchResultsController: nil)

然后将其添加到navigationItem,

    controller.searchResultsUpdater = self
    controller.obscuresBackgroundDuringPresentation = false
    controller.searchBar.placeholder = "Search Candies"
    definesPresentationContext = true
    if #available(iOS 11.0, *) 
        navigationItem.searchController = controller
     else 
        navigationItem.titleView = searchController.searchBar
    

信用:https://www.raywenderlich.com/157864/uisearchcontroller-tutorial-getting-started

【讨论】:

这正是我想要的。非常感谢。干杯!【参考方案2】:

您可以通过创建UISearchBar 的子类来自定义它:

class CustomSearchBar: UISearchBar 

    override init(frame:CGRect) 
        super.init(frame: frame)
        setup()
    

    required init?(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
        setup()
    

    func setup() 

        self.placeholder = "Search"

        // Color of the text field (in your case it should be gray)
        self.barTintColor = yourGraySearchBarColor

        // Color of the cursor (you don't need to change this if you want to stay with the default blue)
        self.tintColor = UIColor.white

        // Background color of you search bar
        self.backgroundImage = UIImage(named: "SearchBarBG")
    

要设置搜索栏的背景颜色,您必须创建一个图像,这是一个只有您想要的颜色(在您的情况下为浅灰色)的正方形,大小无关紧要,我会将其设置为 20x20 像素。

可以通过在整个屏幕上方添加一个半透明的灰色UIView来使背景变暗(SearchBar除外,所以它需要在SearchBar下方)。如果您采用UISearchBarDelegate,则可以在searchBarTextDidBeginEditing(_ searchBar: UISearchBar) 函数中添加此叠加层,并在searchBarTextDidEndEditing(_ searchBar: UISearchBar) 函数中将其删除。

【讨论】:

如何让tableview中的cell点击时不显示蓝色背景?

我是这样写的:-(void)viewDidLoad……[self.tableViewsetSeparatorStyle:UITableViewCellSeparatorStyleNone];[self.tableViewsetSeparatorColor:[UIColorclearColor]];[self.tableViewsetBackgroundView:nil];……-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)i... 查看详情

如何让 tableView.reloadData() 与核心数据正常工作?

】如何让tableView.reloadData()与核心数据正常工作?【英文标题】:HowdoIgettableView.reloadData()toworkproperlywithcoredata?【发布时间】:2019-12-0604:07:35【问题描述】:当我运行应用程序时,我可以填充我的tableview中的单元格,但是当我保存... 查看详情

IOS TableView 如何更新 TableView 中的元素

】IOSTableView如何更新TableView中的元素【英文标题】:IOSTableViewhowcanIupdateanelementinmyTableView【发布时间】:2018-08-2600:34:14【问题描述】:我正在使用Swift4,我终于让我的TableView单元工作正常。我有一个点赞按钮,当用户点击它时,... 查看详情

UISearchDisplayController 没有结果tableView?

】UISearchDisplayController没有结果tableView?【英文标题】:UISearchDisplayControllerwithnoresultstableView?【发布时间】:2009-07-3118:44:44【问题描述】:通常,UISearchDisplayController在激活时会使tableView变暗并聚焦searchBar。一旦您在searchBar中输入... 查看详情

如何将 panGestureRecognizer 添加到 TableView,并且在识别平底锅时仍然让 tableview 滚动?

】如何将panGestureRecognizer添加到TableView,并且在识别平底锅时仍然让tableview滚动?【英文标题】:HowcanIaddapanGestureRocgnizerToaTableView,andstillhavethetableviewscrollwhilerecognizingpansright?【发布时间】:2015-06-1305:38:53【问题描述】:我正在使... 查看详情

如何使用自定义模型类按部分按字母顺序对 tableView 中的数据进行排序?

】如何使用自定义模型类按部分按字母顺序对tableView中的数据进行排序?【英文标题】:HowdoyousortdatainatableViewalphabeticallybysectionusingacustommodelclass?【发布时间】:2017-01-1404:57:06【问题描述】:我是编码新手,一直在尝试按部分按... 查看详情

如何让 tableview 单元格从下到上填充? [关闭]

】如何让tableview单元格从下到上填充?[关闭]【英文标题】:HowdoIgettableviewcelltopopulatefrombottomtotop?[closed]【发布时间】:2017-05-0718:50:10【问题描述】:我想让单元格从tableview的底部向上开始。它目前正在从上到下。我正在从firebase... 查看详情

当我滚动 tableview 时,如何让 headerView 滚动(不停留在 tableview 的顶部)伴随 UItableViewCell

】当我滚动tableview时,如何让headerView滚动(不停留在tableview的顶部)伴随UItableViewCell【英文标题】:howcanimakeheaderViewscroll(notstayonthetopofthetableview)accompanyingwithUItableViewCellwheniwasscrollingtableview【发布时间】:2013-12-3108:24:58【问题描... 查看详情

SnapKit:如何以编程方式为 TableView 单元中的项目设置布局约束

】SnapKit:如何以编程方式为TableView单元中的项目设置布局约束【英文标题】:SnapKit:HowtosetlayoutconstraintsforitemsinaTableViewCellprogramatically【发布时间】:2019-02-2412:16:28【问题描述】:我是swift/iOS开发的初学者。来自web开发,与DOM/Box... 查看详情

如何阻止 UIView 使用 tableview 滚动?

】如何阻止UIView使用tableview滚动?【英文标题】:HowtostopaUIViewfromscrollingwithtableview?【发布时间】:2015-11-2503:57:33【问题描述】:我有一个UITableViewController,我在导航项的正下方和实际表格的上方放置了一个UIView。我遇到的问题... 查看详情

iOS:如何让 TableView 不填充高度?

】iOS:如何让TableView不填充高度?【英文标题】:iOS:HowtomakeTableViewnottofilltheheight?【发布时间】:2013-02-2510:43:30【问题描述】:我在xcode的xib编辑器中创建了一个表格视图。我已将表格视图放置在屏幕中间,它从中间某处开始(... 查看详情

如何让共享按钮在 tableview 单元格中快速工作?

】如何让共享按钮在tableview单元格中快速工作?【英文标题】:howtogetsharebuttontoworkintableviewcellswift?【发布时间】:2021-12-2613:53:57【问题描述】:我是swift新手,我正在使用tableviews创建提要。我有一个自定义表格视图单元格,它... 查看详情

如何让qml TableView行高动态适应内容

】如何让qmlTableView行高动态适应内容【英文标题】:HowtomakeqmlTableViewrowheightdynamicallyadapttocontent【发布时间】:2018-10-3111:32:38【问题描述】:问题如下:如果文本的长度大于单元格的宽度,则文本被换行,但行高不增加。显示剩... 查看详情

高度调整到 TableView 单元格中的内容?

】高度调整到TableView单元格中的内容?【英文标题】:HeightadjusttocontentinTableViewcell?【发布时间】:2016-06-1622:31:01【问题描述】:我对Swift还很陌生,我偶然发现了一个问题。我获取一些JSON数据并将其显示在TableView中,但问题是... 查看详情

Xamarin Forms - 如何让 TableView 和 ListView 扩展到 iPhone X 安全区域?

】XamarinForms-如何让TableView和ListView扩展到iPhoneX安全区域?【英文标题】:XamarinForms-HowtohaveTableViewandListViewExtendintoiPhoneXSafeArea?【发布时间】:2019-08-0820:45:04【问题描述】:我在页面构造函数中使用了特定于平台的使用安全区域,... 查看详情

如何让 iOS 在 tableView 上显示删除按钮,但不允许从右侧完全滑动删除

】如何让iOS在tableView上显示删除按钮,但不允许从右侧完全滑动删除【英文标题】:HowcanIgetiOStoshowadeletebuttononatableView,butnotallowafullswipefromtherighttodelete【发布时间】:2019-09-2413:07:09【问题描述】:从右侧完全滑动以从tableView中删... 查看详情

让 tableView 从 NSUserDefaults 中删除滑动删除项目 - 如何将这两个功能结合在一起?

】让tableView从NSUserDefaults中删除滑动删除项目-如何将这两个功能结合在一起?【英文标题】:LetthetableViewdeleteswipedeleteitemsfromNSUserDefaults-Howtobringthesetwofunctionstogether?【发布时间】:2015-01-2820:05:51【问题描述】:我想让我的应用程... 查看详情

单击tableview单元中的Collectionview时如何找到tableview的索引路径

】单击tableview单元中的Collectionview时如何找到tableview的索引路径【英文标题】:HowtofindtheindexpathoftableviewwhenCollectionviewisclickedwhichisintabelviewCell【发布时间】:2017-06-0605:55:50【问题描述】:我有一个表格视图单元格,其中包含集合... 查看详情