【问题标题】:UISearchBar and/or UISearchDisplayController colorUISearchBar 和/或 UISearchDisplayController 颜色
【发布时间】:2014-01-17 04:08:03
【问题描述】:

更新:感谢所有答案。我想补充一点,使用的搜索栏实际上是作为UISearchDisplayController 的一部分嵌入的UISearchBar,它设置为UITableView 的标题。

我在这里创建了一个展示此行为的示例项目:https://dl.dropboxusercontent.com/u/3497087/TestSearchDisplayController.zip。我尝试将barTintColor 设置为蓝色和黑色。最明显的是,当设置为黑色时,我得到一个灰色的条。

感谢所有答案和想法,谢谢。


我正在为我目前正在开发的应用程序设计皮肤,但我似乎遇到了UISearchBar 和/或UISearchDisplayController 条形颜色的障碍。

我遇到的第一个问题是为UISearchBar 设置barTintColor,它作为tableview header 附加。我已在 Interface Builder 中将其设置为 blackColor。但是,当应用程序运行时,颜色似乎不是黑色,而是某种灰色,上面有一条难看的白线!我已经尝试通过代码设置此代码,但这似乎也无济于事。请参阅下面的屏幕截图。

我的第二个问题围绕UISearchDisplayController。当搜索显示控制器占据屏幕顶部时,我想要黑色。我已经尝试设置颜色代码,但唯一不会采用的颜色是黑色!

【问题讨论】:

  • 使用 TintColor 属性而不是 barTintColor
  • @Sunnyshah tintColor 不会更改条形颜色,而是会更改取消条形按钮项的文本颜色。
  • 尝试将 UINavigationBar 的颜色更改为黑色并检查。

标签: ios objective-c uisearchbar uisearchdisplaycontroller


【解决方案1】:
 [[UISearchBar appearance] setBackgroundImage:[UIImage imageNamed:@"black"]];

查看您的sample project

【讨论】:

  • 是的,这就是我面临的问题。如果我将 UISearchBar 从 searchDisplayController 中分离出来,我可以正确地对其进行皮肤处理。但这意味着我失去了 searchDisplayController 附带的功能。
  • 因为搜索显示控制器有自我半透明的努力
  • 你知道是否可以改变它吗?
  • 关闭下拉表格视图后可以看到搜索栏
  • 抱歉,我投了赞成票,但忘记点击勾选接受。完毕。再次感谢!
【解决方案2】:

你可以试试这个:

_searchBar.barTintColor = [UIColor blackColor]; // change the barColor     
_searchBar.tintColor = [UIColor whiteColor]; // change the title color

【讨论】:

    【解决方案3】:

    就像将searchBar.barTintColor 设置为您想要的颜色一样简单。不需要图像。 searchBar.tintColor 更改取消按钮的颜色。

    【讨论】:

      【解决方案4】:

      我只是添加了一个辅助函数来设置所有内容,包括取消按钮颜色 (tint.color)。这在 ViewDidLoad 中调用:

      //Set the searchbar settings, delegates
      func setSearchBar() {
      
          searchController = UISearchController(searchResultsController: nil)
          searchController.searchResultsUpdater = self
          searchController.searchBar.placeholder = "Enter Search Text"
          searchController.searchBar.barTintColor = UIColor(red: 72/255, green: 100/255, blue: 156/255, alpha: 1)
          searchController.searchBar.tintColor = UIColor.white
      
          searchController.hidesNavigationBarDuringPresentation = false
          searchController.dimsBackgroundDuringPresentation = false
      }
      

      您还可以为搜索栏颜色(barTintColor)设置自己的颜色。这适用于 Xcode 8 和 Swift 3。

      【讨论】:

        【解决方案5】:

        对于您的第一个问题,几个月前我遇到了同样的问题。看看:iOS7, backgroundImage for UISearchBar 最后,它使用方法:

        setBackgroundImage:forBarPosition:barMetrics:
        

        【讨论】:

          【解决方案6】:

          控制 iOS 7 搜索栏的背景颜色很棘手。最简单、最可靠的方法:制作纯黑色图像并致电setBackgroundImage:forBarPosition:barMetrics:。 (正确设置第二个和第三个参数也很棘手!)为了安全起见,还要明确地将条形图的 translucent 设置为 NO。在代码中完成所有这些;不要依赖 Interface Builder 来解决问题。

          【讨论】:

            【解决方案7】:

            对于搜索栏的背景颜色:

            对于 TintColor:

            [self.searchDisplayController.searchBar setTintColor:[UIColor redColor]];
            

            【讨论】:

              【解决方案8】:

              嗨,你可以试试这个

               _searchBar.tintColor = [UIColor blackColor];
                  _searchBar.backgroundColor = [UIColor clearColor];
                  _searchBar.backgroundImage = nil;
              

              【讨论】:

              • ios7 需要使用 barTintColor 属性。谢谢亲爱的
              • 不要给一个完全不尊重上述问题的声誉
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-09-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-04-01
              相关资源
              最近更新 更多