【问题标题】:Color of the UISearchBar is not the same as the UINavigationBarUISearchBar 的颜色与 UINavigationBar 的颜色不同
【发布时间】:2016-03-16 21:40:13
【问题描述】:

我一直在寻找答案很长一段时间,但找不到任何能让我满意的答案。这是我在 StackOverflow 上的第一个问题,也是我的第一个真正的应用程序,所以我希望我没有犯任何让我感到羞耻的愚蠢错误。

在我的应用程序中,我在导航控制器下有一个带有搜索栏的表格。在 Interface Builder 中,我将搜索栏设置为与导航控制器的颜色相匹配。它们完全相同。 Interface Builder

但是,当应用程序运行时,搜索栏是slightly lighter,并且它与导航控制器有一些线分开。

当我按下搜索栏时,颜色会保持比应有的更亮。 此外,在动画期间,您会看到视图的白色背景看起来不太好。

我尝试了不同的选项,从将背景更改为指定颜色到将 backgroundImage 设置为 UIImage()。我无法获得平滑的效果。必须有一种方法来解决这个问题,也许通过添加自定义层或直接子类化,但我只是想知道是否有一个简单的解决方案来解决我的问题。

我实际上是在使用搜索栏和搜索显示控制器。但这没有任何区别。有趣的是,我并没有真正定制它的任何行为。即使我更改了添加到情节提要中的新搜索栏的颜色,它仍然显示不同的颜色。是否有我不知道的行为?

【问题讨论】:

  • 你在手机里运行过吗?
  • 很遗憾我没有。但我不认为这是我的电脑故障,差异很大。就像它在下面混合了白色背景
  • 你能告诉我搜索栏是什么颜色吗?我想重新创建它,看看它在我的手机上的样子。
  • @gasim #0099ff 是颜色
  • 请看我之前的回答stackoverflow.com/a/45555462/3472073

标签: ios swift uisearchbar


【解决方案1】:

您是否尝试过使用搜索栏和搜索显示控制器。当用户点击搜索栏时,它会向上移动并将导航栏向上推。您可以更改它的颜色以匹配导航栏。您甚至可以通过编程方式(不在情节提要中)在导航栏中添加一个 searchBar 来消除颜色问题。

这是我从另一篇文章中找到的一些可能有帮助的代码!

试试这个

var leftNavBarButton = UIBarButtonItem(customView:Yoursearchbar)

self.navigationItem.leftBarButtonItem = leftNavBarButton 更新

你保留了一个懒惰的 UISearchBar 属性

lazy   var searchBar:UISearchBar = UISearchBar(frame: CGRectMake(0, 0, 200, 20))

在 viewDidLoad 中

searchBar.placeholder = "Your placeholder"
var leftNavBarButton = UIBarButtonItem(customView:searchBar)
self.navigationItem.leftBarButtonItem = leftNavBarButton

如果您想使用故事板,只需将您的搜索栏拖动为插座,然后将惰性属性替换为您的插座搜索器

这是我从(第一个答案)获得代码的地方:Get search bar in navigation bar in Swift

【讨论】:

  • 我实际上是在使用搜索栏和搜索显示控制器。但这没有任何区别。有趣的是,我并没有真正定制它的任何行为。即使我更改添加到情节提要中的新搜索栏的颜色,它仍然显示不同的颜色。是否有我不知道的行为?
  • @MaciejKowalski 当您设置导航栏的颜色时,您是通过编程方式还是通过情节提要中的属性检查器进行设置。另外,您是否在属性检查器中将“顶部栏”设置为“不透明导航栏”?最后,您确定使用的是相同的十六进制代码还是使用颜色选择器?
  • 尝试了两种设置颜色的方法。尝试设置导航栏的颜色以匹配搜索栏。还是不行。而且我使用的是十六进制代码,但我检查了 100 次是否正确。
  • @MaciejKowalski 此时,我将删除视图控制器并重新开始
  • 发布了一个我设法解决的解决方案。 “搜索显示控制器”是造成问题的原因。它在 iOS 8.0 中已被弃用。我已经用 UISearchController 交换了它,现在看起来还可以。
【解决方案2】:

我还没有使用过 UISearchBar,所以这只是一个猜测,但可能与 UISearchBar 的 alpha 属性有关,因为它继承自 UIView。尝试将 alpha 设置为 1.0 看看会发生什么:)

【讨论】:

  • 我相信搜索栏的默认 alpha 是 1。是的,我已经尝试更改它但它根本没有帮助。
【解决方案3】:

所以我继续寻找解决方案,我部分找到了解决方案。事实证明,我们可以在 Interface Builder 中使用的“搜索栏和搜索显示控制器”在 iOS 8.0 中已被弃用。我什至用一个导航控制器和前面提到的搜索栏做了一个空白的应用程序,而后者的颜色总是不合适的。

我没有找到任何解决这个确切问题的方法,但设法稍微改变了我的项目。现在我正在使用以编程方式添加的 UISearchController。

let searchController = UISearchController(searchResultsController: nil)
tableView.tableHeaderView = searchController.searchBar

看起来好多了。但可以肯定的是,我已经使用 OS X 库存色度计检查了颜色,但它们仍然略有不同。它可能与半透明和下面的背景有关,我最终会解决这个问题,但现在它必须保持这样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 2023-03-14
    • 2016-07-13
    相关资源
    最近更新 更多