0

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

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

2 回答 2

0

我所做的是创建了一个UISearchBar子类,并在 IB 中使 searchBar 属于 UISearchDisplayController该子类的一部分。从那里我能够改变tintColorand 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;
        }
    }
}
于 2013-05-17T12:35:14.097 回答
0

AUISearchDisplayController不是界面元素。它是一个控制器,而不是一个视图。它没有颜色。

于 2013-05-17T12:49:32.993 回答