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