3

我正在尝试将搜索栏中文本字段的背景颜色设置为自定义颜色。我在这里查看答案无济于事:

无法更改搜索栏背景颜色

看看那个搜索栏有一个红色的文本字段吗?我遵循了代码,甚至可以验证是否找到了 UISearchBarTextField 对象,并且它的背景颜色设置为 UIColor.red,但颜色没有改变。

我已经弄乱了超级视图的所有背景颜色,希望它可能会有所帮助,但我无法改变那种颜色。也许有一些新技巧,或者有人可以揭示一些可能以某种方式覆盖颜色的东西。

extension UISearchBar {
    var textField: UITextField? {
        return subviews.first?.subviews.first(where: { $0.isKind(of: UITextField.self) }) as? UITextField
    }
}

searchBar.textField?.backgroundColor = UIColor.red // <-- Not working
let textFieldInsideUISearchBarLabel = searchBar.textField?.value(forKey: "placeholderLabel") as? UILabel
textFieldInsideUISearchBarLabel?.textColor = UIColor.lightGray

请注意,UITextField 对象内的文本正在更改为我想要的 lightGray,而不是 UITextField 背景颜色。

4

1 回答 1

8

经过漫长的等待答案,我决定尝试一些实验。我创建了一个新项目,拖动了一个搜索栏,将其连接到 ViewController,添加了 UISearchBar 扩展,并设置了颜色 - 与我在主项目中所做的完全相同。

瞧!它确实设置了应有的背景颜色,并且在主要问题的链接主题中显示。

因此,我将项目并排放置,打开每个项目的情节提要并开始设置 searchBar 的属性,一次一个,直到我明白为什么没有像在主项目中那样设置栏。

我尝试的第一件事是搜索风格。我的项目将其设置为“最小”。我在测试项目中将其更改为“最小”,并立即注意到不再设置颜色。

因此,将主项目中 searchBar 的“搜索样式”属性设置为“默认”允许设置该背景颜色。

如果有人可以发表评论并说出为什么我想自定义背景颜色或如何使其工作时不能使用“Minimal”,我将不胜感激。

于 2017-11-09T22:14:21.103 回答