[英]Unable to change background color of TF in search bar implemented using UISearchController
請嘗試此操作以更改搜索欄中文本字段的背景顏色。
我們有很多方法可以做到這一點:
第一種方式:
extension UISearchBar {
private func getViewElement<T>(type: T.Type) -> T? {
let svs = subviews.flatMap { $0.subviews }
guard let element = (svs.filter { $0 is T }).first as? T else { return nil }
return element
}
func setTextFieldColor(color: UIColor) {
if let textField = getViewElement(type: UITextField.self) {
switch searchBarStyle {
case .minimal:
textField.layer.backgroundColor = color.cgColor
textField.layer.cornerRadius = 6
case .prominent, .default:
textField.backgroundColor = color
}
}
}
}
如何使用
searchBar.setTextFieldColor(color: UIColor.green.withAlphaComponent(0.3))
第二種方式:您可以從搜索欄中獲取文本字段並直接更改顏色:
在斯威夫特
for subView: UIView? in searchBar.subviews {
for field: Any? in subView?.subviews ?? [Any?]() {
if (field is UITextField) {
var textField = field as? UITextField
textField?.backgroundColor = UIColor.gray
}
}
}
在Obj-c
for (UIView *subView in _searchBar.subviews) {
for(id field in subView.subviews){
if ([field isKindOfClass:[UITextField class]]) {
UITextField *textField = (UITextField *)field;
[textField setBackgroundColor:[UIColor grayColor]];
}
}
}
在Swift中:
var textField = searchBar.valueForKey("searchField") as? UITextField
textField?.backgroundColor = UIColor.red // Change as per your requirement
首先你需要在搜索欄下方擴展:
extension UISearchBar {
/// Return text field inside a search bar
var textField: UITextField? {
guard let text = self.value(forKey: "searchField") as? UITextField else {
return nil
}
return text
}
}
然后在你的視圖控制器:
searchBar.textField?.backgroundColor = .red
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.