当我在iOS7中将UISearchBar
设置为minimal style
时,当我选择它时,色调变为黑色,并且文字无法读取,因为黑色为黑色。
这不会产生预期的结果。选择时,色调仍然是黑色......
if(floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
{
// set bar style
_sendToSearchBar.barStyle = UIBarStyleDefault;
// set bar transparancy
_sendToSearchBar.translucent = NO;
// set bar color
_sendToSearchBar.barTintColor = [UIColor whiteColor];
// set bar button color
_sendToSearchBar.tintColor = [UIColor whiteColor];
// set bar background color
_sendToSearchBar.backgroundColor = [UIColor whiteColor];
}
答案 0 :(得分:13)
我有同样的问题,并尝试了几个小时,结论是UISearchBar是非常错误的!特别是在“最小”模式下。
我的解决方法是:
[UIColor clearColor]
[UIColor blackColor]
[UIColor whiteColor]
搜索栏看起来像普通的最小模式, 选中时背景将为白色,因此您可以看到黑色文本。
解决方法并不完美,只是工作,希望可以帮助。
答案 1 :(得分:11)
我有这个错误,经过一些研究后,我得到了这个有效的代码! ios 7 +
//change searchbar color
[searchBar setSearchBarStyle:UISearchBarStyleMinimal];
[searchBar setBackgroundImage:[UIImage imageWithCGImage:(__bridge CGImageRef)([UIColor clearColor])]];
答案 2 :(得分:5)
// iOS7 and after
if(floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
{
// set bar style
bar.barStyle = UIBarStyleBlack;
// set bar transparancy
bar.translucent = NO;
// set bar color
bar.barTintColor = [UIColor blackColor];
// set bar button color
bar.tintColor = [UIColor blackColor];
// set bar background color
bar.backgroundColor = [UIColor blackColor];
}
答案 3 :(得分:2)
searchField.searchBarStyle = UISearchBarStyleMinimal;
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor whiteColor]];
[searchField setBarTintColor:[UIColor blackColor]];
将创建一个带有白色文字的黑色着色搜索栏。
创建searchBar并将最小样式设置为实际生效后,必须调用appearanceWhenContainedIn
。
答案 4 :(得分:1)
我发现,如果同时设置barstyle
和searchbarstyle
,则searchBar会转到预期的最小样式
self.itemsSearchController.searchBar.barStyle = UIBarStyleDefault;
self.itemsSearchController.searchBar.searchBarStyle = UISearchBarStyleMinimal;
答案 5 :(得分:0)
您只需编辑搜索栏属性,以防止搜索栏变得透明:
self.iSearchController.searchBar.searchBarStyle = UISearchBarStyleDefault;
self.iSearchController.searchBar.backgroundImage = [UIImage imageWithImage: [UIImage imageNamed:@"whiteBackgroundImage.png"] withTintColor:[UIColor blackColor]]; // or you can just create any random plain image with this color and use it with imageNamed: method.
self.iSearchController.searchBar.barTintColor = [UIColor blackColor];
为方便起见,imageWithImage:withTintColorMethod定义如下:
@implementation UIImage (Category)
+ (UIImage *) imageWithImage: (UIImage*) image withTintColor: (UIColor*) color {
UIImage *newImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
UIGraphicsBeginImageContextWithOptions(newImage.size, NO, newImage.scale);
[color set];
[newImage drawInRect:CGRectMake(0, 0, newImage.size.width, newImage.size.height)];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
答案 6 :(得分:0)
我遇到了同样的问题。我的搜索栏有一个白色光标但是当我开始输入时,文字是黑色的。我的搜索图标也是灰色而不是白色。我几乎意外地找到了解决方案。
searchBar.setImage(UIImage(), for: .clear, state: .normal)