UISearchBar iOS 10+中的UITextField backgroundColor

Bra*_*n M 2 uitextfield uisearchbar uibackgroundcolor ios10 ios11

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

无法更改搜索栏背景颜色

看到搜索栏的文本字段为红色吗?我遵循了代码,甚至可以验证是否找到了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
Run Code Online (Sandbox Code Playgroud)

请注意,UITextField对象内的文本正像我想要的那样变为lightGray,而不是UITextField背景色。

Bra*_*n M 6

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

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

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

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

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

如果有人可以发表评论并说出为什么要自定义背景色,为什么不能使用“最小”,或者如何使它起作用,我将不胜感激。