无法更改UISearchDisplayController的颜色

时间:2013-01-14 06:50:19

标签: ios6 xcode4.5 uisearchdisplaycontroller

我在UISearchDisplayController上使用UInavigationBar,但UISearchDisplayController的背景颜色与uinavigationbar的颜色不匹配。我在ma ViewDidLoad中使用了以下代码,但没有更改我无法更改UISearchDisplayController的颜色

self.searchDisplayController.searchBar.tintColor = [UIColor clearColor];

2 个答案:

答案 0 :(得分:0)

我所做的是创建了一个UISearchBar子类,并且在IB中使searchBar属于该子类的UISearchDisplayController部分。从那里我可以更改tintColorbackgroundColor。我需要这个的原因是UISearchBarUINavigationBar内没有正确显示,这是我能想到的唯一方法,如何做到。

修改

使用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不是界面元素。它是一个控制器,而不是一个视图。它没有颜色。