UISearchBar中的UITextField backgroundColor iOS 10 +

时间:2017-11-08 00:30:12

标签: uitextfield uisearchbar ios10 ios11 uibackgroundcolor

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

Cannot change search bar background color

查看该搜索栏有一个红色文字字段?我按照代码,甚至可以验证是否找到了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背景颜色。

1 个答案:

答案 0 :(得分:6)

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

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

所以,我把这些项目并排放置,打开每个项目的故事板,然后开始设置searchBar的属性,一次一个,直到我能看到为什么条形图没有被设置为主要项目。

我尝试的第一件事就是搜索风格。我的项目设置为&#34; Minimal&#34;。我把它改成了#34; Minimal&#34;在测试项目中,立即注意到颜色不再设置。

所以,设置&#34;搜索样式&#34;主项目中searchBar的属性为&#34;默认&#34;允许设置背景颜色。

如果有人能评论并说出为什么我不能使用&#34; Minimal&#34;我会非常感激。如果我想自定义背景颜色,或者我如何使其工作。