我已经实现了搜索栏,我想更改搜索栏的颜色。我怎么能这样做?
我试过了:
self.mySearchBar.backgroundColor = [UIColor redColor];
但没有成功。
更新(已解决):
在使用以下代码定义背景颜色之前,我必须删除默认背景颜色。
for (UIView *subview in mySearchBar.subviews) {
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
[subview removeFromSuperview];
break;
}
}
...所以代码就是下一个:
for (UIView *subview in mySearchBar.subviews) {
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
[subview removeFromSuperview];
break;
}
}
self.mySearchBar.backgroundColor = [UIColor redColor];
答案 0 :(得分:25)
尝试:
self.mySearchBar.barTintColor = [UIColor redColor];
答案 1 :(得分:6)
self.mySearchBar.backgroundColor = [UIColor redColor];
不会做任何事情,
但
self.mySearchBar.tintColor = [UIColor redColor];
意志!
答案 2 :(得分:2)
self.mySearchBar.backgroundVolor = [UIColor redColor];
“Volor”或“Color
self.mySearchBar.backgroundColor = [UIColor redColor];
另外,如果你想给它着色:
根据文档:https://developer.apple.com/iphone/library/documentation/UIKit/Reference/UISearchBar_Class/Reference/Reference.html,UISearchBar类上有一个tintColor属性。
在TableSearch示例中:https://developer.apple.com/library/ios/#samplecode/TableSearch/在MainView.xib中定义并加载搜索栏。如果你想改变它的tintColor或样式,只需在xib中进行,它就会被加载到应用程序中。
但改变背景颜色的唯一真实方法是覆盖它,看看下面问题的答案
UISearchBar clear background color or set background image [iphone sdk]
答案 3 :(得分:2)
我不确定自iOS7以来它是否有所改变,但似乎搜索显示控制器中的搜索栏需要一个额外的循环来正确删除UISearchBarBackground视图。
我创建了一个递归方法来正确清理搜索栏。
- (void) removeUISearchBarBackgroundInViewHierarchy:(UIView *)view
{
for (UIView *subview in [view subviews]) {
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
[subview removeFromSuperview];
break; //To avoid an extra loop as there is only one UISearchBarBackground
} else {
[self removeUISearchBarBackgroundInViewHierarchy:subview];
}
}
}
您只需将搜索栏发送到方法并稍后更改颜色,就像上面的建议答案一样。
[self removeUISearchBarBackgroundInViewHierarchy:self.searchDisplayController.searchBar];
self.searchDisplayController.searchBar.backgroundColor = yourUIColor;
答案 4 :(得分:1)
searchBar.barTintColor = UIColor.redColor()
答案 5 :(得分:0)
试试这个代码,它对我来说很好。
for( UIView* v in [parent subviews] ) {
if( [v isKindOfClass:[UISearchBar class]] ) {
[(UISearchBar*)v setTintColor:[UIColor blackColor]];
}
答案 6 :(得分:0)
如果您遇到顶线和底线问题,请尝试删除UISearchBarBackground:
Spock::SpockConnector
Spock::Report
Spock::Bridge
Spock::Metric
答案 7 :(得分:0)
我必须将UISearchBar的searchBarStyle
设置为.default
,否则无效。