我使用以下代码在UINavigationItem中添加了一个搜索栏:
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[searchBar sizeToFit];
searchBar.delegate = self;
self.navigationItem.titleView = searchBar;
self.navigationItem.title = self.category.title;
[searchBar release];
但结果用户界面是这样的:
如何更改搜索栏的颜色并使其与导航栏的背景相同?
感谢。
答案 0 :(得分:4)
对于UINavigationBar,有多种方法可以操作它的背景颜色:
对于搜索栏,tintColor也可用。但在你的情况下,我建议继承UISearchBar形式并提供如下所示的实现,以完全摆脱背景绘制程序。在这种情况下,您将在透明工具栏上获得搜索栏,并且您将需要仅管理UINavigationBar颜色。
//TransparentSearchBar.m
@interface TransparentSearchBar()
- (void)removeBackgroundView;
@end
@implementation TransparentSearchBar
- (id)init
{
self = [super init];
if(self) {
[self removeBackgroundView];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self) {
[self removeBackgroundView];
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self) {
[self removeBackgroundView];
}
return self;
}
- (void)removeBackgroundView
{
for (UIView *view in self.subviews)
{
if ([view isKindOfClass:NSClassFromString
(@"UISearchBarBackground")])
{
[view removeFromSuperview];
break;
}
}
}
@end
答案 1 :(得分:0)
如果您在UISearchBar上看到文档,则它具有属性“tintColor”。 将其设置为导航栏的颜色。
如果您不知道导航栏的颜色,请获取navigationBar的tintColor。
您可能还希望使用搜索栏的“半透明”属性。可能会更好地工作。