更改 UISearchBar 内 CLEAR 按钮的 Tint 颜色 NOT CANCEL BUTTON
Posted
技术标签:
【中文标题】更改 UISearchBar 内 CLEAR 按钮的 Tint 颜色 NOT CANCEL BUTTON【英文标题】:Change Tint color of CLEAR button inside UISearchBar NOT CANCEL BUTTON 【发布时间】:2016-05-25 11:10:42 【问题描述】:我想自定义 UISearchBar
内的取消按钮,当用户输入文本时出现,清除文本,查看图像,我想更改红色方块内按钮的色调颜色而不是带有“取消”文本的按钮
我尝试过的:
[[UIButton appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor:[UIColor redColor]];
但它会改变按钮的颜色,文本“取消”而不是图标以清除文本字段内的文本
这不是一个重复的问题,因为我想更改默认清晰图像的色调,而不是使用自定义图像,类似这样:
How to change the tint color of the clear button on a UITextField
但对于 UISearchBar
【问题讨论】:
***.com/questions/13862050/… 可能重复 检查这个问题***.com/questions/1200149/… 我说的是清除按钮红色方块的按钮 我也遇到了同样的问题,清除按钮颜色没有改变。 【参考方案1】:UIImage *imgClear = [UIImage imageNamed:@"clear"];
[mySearchBar setImage:imgClear forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal];
【讨论】:
可行,但我只想将默认清除按钮的色调更改为白色(因为文本字段的背景颜色很暗) 查看这个答案以获得快速版本:***.com/a/52257939/3400939【参考方案2】:Swift
4.2、4.1+
似乎currentImage
是nil
for clearButton
from Swift 4.1+
。它可能适用于旧版本。
所以我创建了这个类,这里的补充是为clear
button
提供你自己的图像和颜色。
class SearchBar: UISearchBar
var clearButtonImage: UIImage?
var clearButtonColor: UIColor = .white
override func layoutSubviews()
super.layoutSubviews()
if let textField = self.value(forKey: "searchField") as? UITextField
if let clearButton = textField.value(forKey: "clearButton") as? UIButton
update(button: clearButton, image: self.clearButtonImage, color: clearButtonColor)
private func update(button: UIButton, image: UIImage?, color: UIColor)
let image = (image ?? button.currentImage)?.withRenderingMode(.alwaysTemplate)
button.setImage(image, for: .normal)
button.setImage(image, for: .highlighted)
button.tintColor = color
所以现在您可以如下设置clearButton
图像以使其工作,
let searchBar = SearchBar()
searchBar.clearButtonImage = UIImage(named: "clearIcon")
searchBar.clearButtonColor = .green
故事板或 XIB
您必须将SearchBar
类设置为custom class
以获取如下所示的搜索栏,
和outlet
如下设置图像和颜色等
@IBOutlet private weak var searchBar: SearchBar!
【讨论】:
它为 nil 的原因是因为您需要至少输入一次内容才能将其加载到内存中。所以你也需要在第一次编辑时更新它(或者像你一样,在 layoutSubviews 中)以上是关于更改 UISearchBar 内 CLEAR 按钮的 Tint 颜色 NOT CANCEL BUTTON的主要内容,如果未能解决你的问题,请参考以下文章
如何在iOS7中更改UISearchBar的取消按钮的textColor?
在 iOS 8 中更改 UISearchBar 取消按钮文本