iOS 11 UISearchBar 背景颜色

标签 ios objective-c swift uisearchbar ios11

我知道这个问题已经被问过很多很多次了。然而,正如 Apple 所做的那样,随着 iOS 11 的发布,他们似乎对 UISearchBar 进行了看似不必要的更改,特别是它的 View 层次结构。

此外,搜索栏的“文本字段”在搜索栏的 subview 中不再可访问,导致所有之前的解决方案“访问”并更改文本的背景颜色字段,或与此相关的文本字段的任何属性。

  • 有人知道如何实际调整 iOS 11 中搜索栏的背景颜色吗?

仅供引用: 我特别讨论的是文本背后的颜色...从 11 开始默认为白色,除非您将搜索栏样式指定为最小。

更新1:

自从我发布这个问题以来,我仍然没有找到有效的或真正的任何真正的解决方案来解决这个问题。我似乎最接近的是深入研究实例属性的外观

[[UISearchBar class] appearanceWhenContainedInInstancesOfClasses:(nonnull NSArray<Class<UIAppearanceContainer>> *)]

UISearchBar 的。通过如下方法使用找到的 UITextField:

if ([view isKindOfClass:[UITextField class]]) {
    return (UITextField*)view;
}
UITextField *searchTextField;
for (UIView *subview in view.subviews) {
    searchTextField = [self searchViewForTextFieldBg:subview];
    if (searchTextField) {
        break;
    }
}
return searchTextField;

您可以开始绘制一个背景 View 并将其放置在 View 后面。然而,我发现过于乏味而无法进一步解决的问题是使用正确的框架/边界绘制 View 以准确模仿原始背景。

希望有人能够找到此问题的实际解决方案。漂亮的苹果小姐...

最佳答案

我想您可能正在寻找这个,对吧?但我在 Swift 中有它:(

@IBOutlet weak var sbSearchBar: UISearchBar!

if let textfield = sbSearchBar.value(forKey: "searchField") as? UITextField {
    textfield.textColor = UIColor.blue
    textfield.backgroundColor = UIColor.yellow
}

这是结果:

enter image description here

关于iOS 11 UISearchBar 背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343989/

相关文章:

swift - 如何在 Swift 中将 UISlider 设置为只有一个轨道图像,而不是使用最小轨道图像和最大轨道图像?

ios - Google places - GMSAutocompleteViewController didAutocompleteWith 全文

ios - 相同的信标如何具有唯一的 BTLE 地址?

ios - 将 iPhone xib 转换为 iPad xib?

iphone - 长时间操作延迟后自旋事件指示器

ios - 在持久化 UIView 的同时推送 navigationController

iphone - 声音不使用 AVAudioPlayer 播放

ios - 检查 Objective-C 框架支持的架构

ios - NSURLSession 委托(delegate) didCompleteWithError 未调用

iOS UITabBar selectionIndicatorImage Y 位置