我知道这个问题已经被问过很多很多次了。然而,正如 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
}
这是结果:
关于iOS 11 UISearchBar 背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343989/