我在UISearchDisplayController
上使用UInavigationBar
,但UISearchDisplayController
的背景颜色与uinavigationbar的颜色不匹配。我在ma ViewDidLoad
中使用了以下代码,但没有更改我无法更改UISearchDisplayController
的颜色
self.searchDisplayController.searchBar.tintColor = [UIColor clearColor];
答案 0 :(得分:0)
我所做的是创建了一个UISearchBar
子类,并且在IB中使searchBar属于该子类的UISearchDisplayController
部分。从那里我可以更改tintColor
和backgroundColor
。我需要这个的原因是UISearchBar
在UINavigationBar
内没有正确显示,这是我能想到的唯一方法,如何做到。
修改强>
使用UISearchDisplayController
的初始化程序initWithSearchBar:contentsController:
,您实际上可以相对轻松地完成此操作,但是您仍然需要继承UISearchBar
。
这是我使用的代码。现在,如果您通过IB执行此操作,则只需使用initWithCoder:
,但我创建了setup
方法。只是,我需要在IB以外的地方再次使用它。
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code
[self setup];
}
return self;
}
-(id) initWithCoder:(NSCoder *)aDecoder {
if (self = [super initWithCoder:aDecoder]) {
[self setup];
}
return self;
}
-(id)init {
if (self = [super init]) {
[self setup];
}
return self;
}
-(void) setup {
self.backgroundColor = [UIColor clearColor];
self.tintColor = [UIColor clearColor];
for (UIView * view in self.subviews) {
if ([view isMemberOfClass:NSClassFromString(@"UISearchBarBackground")]) {
view.alpha = 0.0;
}
}
}
答案 1 :(得分:0)
UISearchDisplayController
不是界面元素。它是一个控制器,而不是一个视图。它没有颜色。