iOS 13 UISearchBar 外观和行为

Posted

技术标签:

【中文标题】iOS 13 UISearchBar 外观和行为【英文标题】:iOS 13 UISearchBar appearance and behaviour 【发布时间】:2019-09-13 16:52:23 【问题描述】:

我的UISearchBar 设置如下:

searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false // Allow user to tap on results
searchController.searchBar.placeholder = "Search patients" // Placeholder
searchController.searchBar.barStyle = .blackOpaque
searchController.searchBar.tintColor = colors.text // Cancel button tint

navigationItem.searchController = searchController // Set the searchController
navigationItem.hidesSearchBarWhenScrolling = true // Auto-hide search when user scrolls

这是它在 ios 12 上的外观: 与 iOS 13: iOS 13 有哪些变化?我尝试过不同的barStyles,并将.isTranslucent 设置为false - 两者都没有效果。明暗模式也不会改变任何东西。

另一个变化是隐藏搜索栏 - 在 iOS 12 上,如果我向上滚动一点,搜索栏会隐藏(无论表格是否已填充)。在 iOS 13 中,一旦出现搜索栏(即用户向下滑动),就无法再次隐藏。有谁知道这个问题的解决方法吗?

【问题讨论】:

你试过 searchBar.searchBarStyle = .prominent 吗?? @souvickcse 刚试过,可惜没啥区别 我几乎放弃了大标题并搜索 iOS 13。这是一个巨大的集群。 :( 我在半透明的搜索栏上很难获得与 iOS 13 相同的外观。我最终得到了 60 行代码,用我自己的替换了原来的背景视图。 @fl034 看看我自己的答案 【参考方案1】:

我遇到了类似的问题。我不知道为什么在当前的 iOS 13 中会发生这种情况并且在旧版本中可以正常工作。但是我通过将此功能添加到您的 searchBar 找到了解决方案。

if #available(iOS 13.0, *) 
   searchBar.searchTextField.backgroundColor = UIColor.white

修复后预览:

【讨论】:

searchBar.backgroundColor 适用于低于 13 的 iOS 系统吗?【参考方案2】:

如何将searchBarStyle 用作default 并更改searchTextField 背景颜色?

if #available(iOS 13.0, *) 
    searchBar.searchBarStyle = .default
    searchBar.searchTextField.backgroundColor = UIColor.black.withAlphaComponent(0.1)

【讨论】:

【参考方案3】:

对于像AppDelegate这样的全局设置:

if #available(iOS 13, *) 
    UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = .anyColor

【讨论】:

UISearchBar.appearance().searchTextField.backgroundColor = .anyColor 在这里不起作用的任何原因?【参考方案4】:

searchController.searchBar.searchTextField.backgroundColor = UIColor.black 将这项工作作为一种解决方法。选择器是 iOS 13 中的新功能。

我已经提交了关于反馈助手的报告,因为我确实认为这是意外行为。

【讨论】:

【参考方案5】:

iOS 13+。

searchController.searchBar.searchTextField.backgroundColor = UIColor.white

【讨论】:

以上是关于iOS 13 UISearchBar 外观和行为的主要内容,如果未能解决你的问题,请参考以下文章

UISearchBar MinimalStyle 选定颜色

在 iOS7 中使用 UISearchBar 将子视图添加到 tableHeaderView 行为不端

在 iOS 7 中自定义 UISearchBar

自定义UISearchBar外观

添加 UISearchBar 后 UIRefreshControl 的行为有所不同

iPhone UISearchBar & keyboard外观