UISearchBar和/或UISearchDisplayController的颜色

6
更新:感谢所有答案。我想补充说明一下所使用的搜索栏实际上是嵌入在UISearchDisplayController中作为UITableView头部的UISearchBar
我在这里创建了一个展示此行为的样本项目:https://dl.dropboxusercontent.com/u/3497087/TestSearchDisplayController.zip。我尝试将barTintColor设置为蓝色和黑色。最明显的问题是当设置为黑色时,我得到一个灰色的条。
我感激所有的答案和想法,谢谢。
我正在处理皮肤应用程序,但我似乎在UISearchBar和/或UISearchDisplayController栏颜色方面遇到了障碍。
我首先遇到的问题是设置作为tableview header附加的UISearchBarbarTintColor。我已在Interface Builder中将其设置为黑色。然而,当应用程序运行时,颜色似乎不是黑色,而是某种灰色,并有一个丑陋的白线在上面!我已经尝试通过代码来设置这个,但那似乎也没有帮助。请看下面的截图。
我的第二个问题涉及到UISearchDisplayController。当搜索显示控制器接管屏幕顶部时,我希望它是黑色的。我已经尝试设置颜色代码,但唯一不起作用的颜色再次是黑色!

请使用TintColor属性而不是barTintColor。 - Sunny Shah
1
@Sunnyshah tintColor 不会改变工具栏颜色,但是它会改变“Cancel”按钮项的文本颜色。 - XCool
尝试将UINavigationBar的颜色更改为黑色并检查。 - Krunal
8个回答

9
 [[UISearchBar appearance] setBackgroundImage:[UIImage imageNamed:@"black"]];

enter image description here

请查看你的示例项目

enter image description here


是的,这就是我正在面对的问题。如果我将UISearchBar从searchDisplayController中分离出来,我就可以正确地美化它。但这意味着我失去了searchDisplayController带来的功能。 - XCool
1
由于搜索显示控制器具有自我半透明的效果。 - codercat
你知道是否有可能改变那个吗? - XCool
下拉表格视图后,取消后即可看到搜索栏。 - codercat
抱歉,我已经点赞了,但是忘记点击勾选来接受答案。好的,现在完成了。再次感谢! - XCool
让我们在聊天室继续这个讨论 - XCool

5
你可以试试这个:

你可以试试以下方法:

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

3

只需将searchBar.barTintColor设置为所需颜色即可,无需使用图片。searchBar.tintColor可更改取消按钮的颜色。


3

我刚刚添加了一个帮助函数,可以设置所有内容,包括取消按钮的颜色(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。

2

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

setBackgroundImage:forBarPosition:barMetrics:

0

搜索栏背景颜色:

enter image description here

enter image description here

对于TintColor:

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

0

控制iOS 7搜索栏背景颜色有些棘手。最简单和最可靠的方法:制作一个纯黑色图像并调用setBackgroundImage:forBarPosition:barMetrics:。(正确设置第二个和第三个参数也很棘手!)此外,为了安全起见,明确设置栏的translucent为NO。所有这些都要在代码中完成;不要依赖Interface Builder来正确处理事情。


-3

你好,你可以尝试使用这个

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

你需要在iOS7中使用barTintColor属性。谢谢亲爱的。 - Harunmughal
不要给出声望,它与上述问题完全不相关。 - codercat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接