我正在使用UISearchDisplayController
,UInavigationBar
但背景颜色UISearchDisplayController
与 uinavigationbar 的颜色不匹配。我在 ma 中使用了以下代码ViewDidLoad
但没有改变我无法改变颜色UISearchDisplayController
self.searchDisplayController.searchBar.tintColor = [UIColor clearColor];
我正在使用UISearchDisplayController
,UInavigationBar
但背景颜色UISearchDisplayController
与 uinavigationbar 的颜色不匹配。我在 ma 中使用了以下代码ViewDidLoad
但没有改变我无法改变颜色UISearchDisplayController
self.searchDisplayController.searchBar.tintColor = [UIColor clearColor];
我所做的是创建了一个UISearchBar
子类,并在 IB 中使 searchBar 属于 UISearchDisplayController
该子类的一部分。从那里我能够改变tintColor
and backgroundColor
。我需要这个的原因是因为UISearchBar
在 a 中没有正确显示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;
}
}
}
AUISearchDisplayController
不是界面元素。它是一个控制器,而不是一个视图。它没有颜色。