我搜索了很多但是找不到合适的答案。
我想更改内部圆角视图的backgroundColor。
就像Tweetbot在搜索点击上一样,它从灰色变为蓝色。
据我所知,我可能需要迭代子视图,但我不知道如何获得正确的对象。 (对于backgroundColor,它不是_searchLabel)
这个元素的默认对比度太差了,甚至都不好笑:(
答案 0 :(得分:0)
好的,这很有效。但请注意,您无法事先设置UIBarStyle,否则它将覆盖所有内容。 https://stackoverflow.com/a/19836215/1252720
答案 1 :(得分:0)
如果您仍在寻找更好的答案,我只是偶然发现了这个主题并找到了一个很好的解决方案:UISearchBar text color change in iOS 7
如果你看一下Sandeep-Systematix给出的答案(不是接受的答案,但是下面的答案),他提到了一种非常干净的方法来修改任何类别中的子视图:
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor blueColor]];
您可以在Apple的文档中了解更多相关信息:https://developer.apple.com/library/ios/documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html
那就是说,您需要更改UISearchBar中UITextField的白色圆角背景:
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setBackgroundColor:[UIColor redColor]];
现在,如果您需要创建具有不同样式的不同UISearchBars,您只需创建一个UISearchBar的子类,您最终会得到这样的结果:
[[UITextField appearanceWhenContainedIn:[MyCustomSearchBar class], nil] setBackgroundColor:[UIColor redColor]];
答案 2 :(得分:-1)
使用此代码。
_searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.contentView.bounds.size.width, 44.0f)];
_searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
_searchBar.delegate = self;
[self.view addSubView:_searchBar];
UITextField *txfSearchField = [_searchBar valueForKey:@"_searchField"];
txfSearchField.backgroundColor = [UIColor redColor];