从Xcode 5升级到6,现在我的搜索栏色调为黑色。
尝试通过故事板右侧窗格更改它> " Bar Tint"清除颜色,但它仍然是黑色。
也以编程方式尝试:
[self.searchBar setTintColor:[UIColor clearColor]];
仍然是黑色:(
有什么想法吗?
答案 0 :(得分:66)
搜索栏上的tintColor
属性与UINavigationBar非常相似,可以更改按钮的颜色,也可以更改闪烁光标的颜色,而不是实际的搜索栏背景。您要使用的是barTintColor
属性。
searchbar.barTintColor = [UIColor orangeColor];
searchbar.tintColor = [UIColor greenColor];
产生以下丑陋但信息丰富的结果:
如果您想拥有一个完全透明的搜索栏,您还需要设置背景图片:
searchbar.barTintColor = [UIColor clearColor];
searchbar.backgroundImage = [UIImage new];
编辑: 我强烈建议不要遍历和修改任何 UIKit对象的子视图,正如其他答案中所提出的那样。来自Apple的文档:
对于在UIKit和其他系统框架中声明的复杂视图,任何 视图的子视图通常被视为私有且受制于 随时改变。因此,您不应该尝试检索或 修改这些类型的系统提供的视图的子视图。如果你这样做, 在将来的系统更新期间,您的代码可能会中断。
https://developer.apple.com/documentation/uikit/uiview/1622614-subviews
答案 1 :(得分:7)
我必须使用Swift 2.0以这种方式在iOS 9上进行更改:
let image = UIImage()
searchBar.setBackgroundImage(image, forBarPosition: .Any, barMetrics: .Default)
searchBar.scopeBarBackgroundImage = image
答案 2 :(得分:2)
在Swift 3上:
将searchBar的背景设置为空图像:
searchBar.setBackgroundImage(image, for: .any, barMetrics: .default)
searchBar.scopeBarBackgroundImage = image
答案 3 :(得分:0)
我在iOS8 / XCode 6上也看到了这个问题。我的搜索栏没有半透明。 searchbar.barTintColor或searchbar.tintColor设置清除颜色没有帮助或显示黑色搜索栏。
我找到的唯一解决方法是设置半透明背景png图像(alpha = 0.0)并将searchbar.barTintColor设置为清除颜色。
答案 4 :(得分:0)