UISearchBar设置半透明到NO不起作用

时间:2014-06-23 10:14:26

标签: ios uitableview uisearchbar

(我知道这可能看似重复,但我告诉你我在这里发现的一切都没有用)

我有一个带搜索显示控制器的UITableView和一个搜索栏,我试图根据公司颜色设置tintColor。但无论我尝试什么,它都是半透明的。

以下是示例代码:

[self.searchDisplayController.searchBar setTranslucent:NO];
[self.searchDisplayController.searchBar setBarTintColor:[[ConfToolbox sharedInstance] getBarTintColor]];

[[ConfToolbox sharedInstance] getBarTintColor]会返回一个黑暗的蓝色UIColor

我环顾四周寻找答案,但没有任何效果,甚至this accepted answer

任何帮助都会很棒。

干杯,

香鱼。

2 个答案:

答案 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的第二个参数。

来自documentation

  

默认值为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;
相关问题