无法在iOS 8中将搜索栏色调颜色更改为透明

时间:2014-09-26 17:02:16

标签: ios iphone ios8 uisearchbar searchbar

从Xcode 5升级到6,现在我的搜索栏色调为黑色。

尝试通过故事板右侧窗格更改它> " Bar Tint"清除颜色,但它仍然是黑色。

也以编程方式尝试:

[self.searchBar setTintColor:[UIColor clearColor]];

仍然是黑色:(

有什么想法吗?

5 个答案:

答案 0 :(得分:66)

搜索栏上的tintColor属性与UINavigationBar非常相似,可以更改按钮的颜色,也可以更改闪烁光标的颜色,而不是实际的搜索栏背景。您要使用的是barTintColor属性。

searchbar.barTintColor = [UIColor orangeColor];
searchbar.tintColor = [UIColor greenColor];

产生以下丑陋但信息丰富的结果:

enter image description here

如果您想拥有一个完全透明的搜索栏,您还需要设置背景图片:

searchbar.barTintColor = [UIColor clearColor];
searchbar.backgroundImage = [UIImage new];

enter image description here

编辑: 我强烈建议不要遍历和修改任何 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)

以编程方式更改搜索栏的颜色:

    if let textfield = searchBar.value(forKey: "searchField") as? UITextField {
        textfield.textColor = #colorLiteral(red: 0.3921568627, green: 0.3921568627, blue: 0.3921568627, alpha: 1)
        textfield.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    }

情节提要:

enter image description here