【问题标题】:UITextField backgroundColor in UISearchBar iOS 10+UISearchBar中的UITextField背景颜色iOS 10+
【发布时间】:2018-04-20 13:06:48
【问题描述】:

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

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 背景颜色。

【问题讨论】:

    标签: uitextfield uisearchbar ios10 ios11 uibackgroundcolor


    【解决方案1】:

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

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

    所以,我将项目并排放置,打开每个项目的情节提要并开始设置 searchBar 的属性,一次一个,直到我明白为什么栏没有按照应有的方式设置主要项目。

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

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

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

    【讨论】:

    • 您先生,真是个天才。把我从一个整体中拉了出来。太棒了。
    • 是prolly,因为searchBar在极简风格下是半透明的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 2010-12-30
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多