UISearchBar 中的 UITextField 背景颜色 iOS 10+

UITextField backgroundColor in UISearchBar iOS 10+

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

Cannot change search bar background color

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

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

extension UISearchBar {
    var textField: UITextField? {
        return subviews.first?.subviews.first(where: { [=11=].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 对象内的文本正在更改为我想要的浅灰色,而不是 UITextField 背景颜色。

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

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

因此,我将项目并排放置,打开每个项目中的故事板并开始设置 searchBar 的属性,一次一个,直到我明白为什么栏没有按应有的方式设置在主项目中。

我首先尝试的是搜索方式。我的项目将其设置为 "Minimal"。我在测试项目中将其更改为 "Minimal" 并立即注意到不再设置颜色。

因此,将主项目中搜索栏的 "Search Style" 属性 设置为 "Default" 允许设置背景颜色。

如果有人可以发表评论并说明为什么我不能使用 "Minimal" 如果我想自定义背景颜色,或者我如何让它工作,我将不胜感激。