在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清除颜色。