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

29

我从Xcode 5升级到6后,我的搜索栏变成了黑色。

尝试通过故事版右侧窗格>“Bar Tint”更改为透明颜色,但仍然是黑色。

还尝试过编程方式:

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

还是黑的 :(

有什么想法吗?


1
我认为你想设置 barTintColor - CrimsonChris
您希望搜索栏的 背景 是透明的,还是希望搜索栏的 文本框 背景是透明的? - Mike
搜索栏背景 - 橙色矩形框 - 见下方 - ox_
你看到我下面的答案第二部分了吗?我在那里表述得很清楚了。 - Mike
今晚我会尝试并编辑我的评论... - ox_
5个回答

69

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
搜索栏.searchbar.barTintColor = [UIColor orangeColor]; 将其变为橙色,但是当使用[UIColor clearColor]时,由于某种奇怪的原因仍然是黑色。 - ox_
看到我的编辑了吗?你需要更改背景视图。 - Mike
2
对于那些仍然遇到问题的人,我实际上还需要设置searchBar.scopeBarBackgroundImage = [UIImage new];。 - csundman
1
做得很好-省去了我必须子类化的步骤,同时我也同意,如果一切都平等的话,删除视图是一个不好的主意,因为未来的后果是无法预知的。 - BonanzaDriver
对我来说它没有起作用。所以我把一个带有我想要的颜色的UI视图放在搜索栏下面,然后将搜索栏设置为透明(包括栏渲染和背景颜色)。 - Niib Fouda

7
我使用Swift 2.0在iOS 9上进行更改的方法如下:
    let image = UIImage()

    searchBar.setBackgroundImage(image, forBarPosition: .Any, barMetrics: .Default)
    searchBar.scopeBarBackgroundImage = image

好的解决方案。需要注意的是,此解决方案仅在搜索栏为半透明时才有效。 - Kashif

2

关于Swift 3:

将搜索栏的背景设置为空图片:

    searchBar.setBackgroundImage(image, for: .any, barMetrics: .default)
    searchBar.scopeBarBackgroundImage = image

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


-1
我也在iOS8 / XCode 6上遇到了这个问题。我没有使搜索栏半透明。设置searchbar.barTintColor或searchbar.tintColor为清晰的颜色没有帮助,或显示一个黑色的搜索栏。
我唯一找到的解决方法是设置一个半透明的背景png图像(alpha = 0.0),并将searchbar.barTintColor设置为清晰的颜色。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接