我从Xcode 5升级到6后,我的搜索栏变成了黑色。
尝试通过故事版右侧窗格>“Bar Tint”更改为透明颜色,但仍然是黑色。
还尝试过编程方式:
[self.searchBar setTintColor:[UIColor clearColor]];
还是黑的 :(
有什么想法吗?
我从Xcode 5升级到6后,我的搜索栏变成了黑色。
尝试通过故事版右侧窗格>“Bar Tint”更改为透明颜色,但仍然是黑色。
还尝试过编程方式:
[self.searchBar setTintColor:[UIColor clearColor]];
还是黑的 :(
有什么想法吗?
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
let image = UIImage()
searchBar.setBackgroundImage(image, forBarPosition: .Any, barMetrics: .Default)
searchBar.scopeBarBackgroundImage = image
关于Swift 3:
将搜索栏的背景设置为空图片:
searchBar.setBackgroundImage(image, for: .any, barMetrics: .default)
searchBar.scopeBarBackgroundImage = image