(我知道这可能看似重复,但我告诉你我在这里发现的一切都没有用)
我有一个带搜索显示控制器的UITableView和一个搜索栏,我试图根据公司颜色设置tintColor。但无论我尝试什么,它都是半透明的。
以下是示例代码:
[self.searchDisplayController.searchBar setTranslucent:NO];
[self.searchDisplayController.searchBar setBarTintColor:[[ConfToolbox sharedInstance] getBarTintColor]];
[[ConfToolbox sharedInstance] getBarTintColor]
会返回一个黑暗的蓝色UIColor
。
我环顾四周寻找答案,但没有任何效果,甚至this accepted answer。
任何帮助都会很棒。
干杯,
香鱼。
答案 0 :(得分:4)
我实现了我想要的用途,以防万一有人面临同样的问题:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(10,10), YES, 0);
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [[ConfToolbox sharedInstance] barTintColor].CGColor);
CGContextFillRect(UIGraphicsGetCurrentContext(), CGRectMake(0,0,10,10));
UIImage* coloredImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.searchDisplayController.searchBar setBackgroundImage:coloredImage forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
您可以使用您想要的任何颜色设置CGContextSetFillColorWithColor
的第二个参数。
默认值为YES。如果搜索栏具有自定义背景 如果图像的任何像素具有alpha值,则默认为YES 小于1.0,否则为NO。
由于图像是由alpha值为1的颜色制成的,所以半透明效果会如所述那样关闭。
答案 1 :(得分:0)
尝试这样,
self.searchBar.frame = CGRectMake(self.searchBar.frame.origin.x, self.searchBar.frame.origin.y+7, self.searchBar.frame.size.width, 30);
self.searchBar.placeholder = @"Search...";
self.searchBar.layer.cornerRadius = 15;
self.searchBar.layer.backgroundColor = [UIColor redColor].CGColor;
self.searchBar.layer.borderWidth=8;
[[NSClassFromString(@"UISearchBarTextField") appearanceWhenContainedIn:[UISearchBar class], nil] setBorderStyle:UITextBorderStyleNone];
self.searchBar.layer.borderColor=[UIColor redColor].CGColor;