我正在使用google places API for autoComplete小部件。我正在使用swift在ios 9+中显示全屏控制。我正在添加文档中给出的完整控件。
我添加了文档中显示的代码。现在我想将searchBar文本颜色更改为whiteColor。
所以我试过这个
UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).textColor = UIColor.whiteColor()
但我没有得到理想的行为。以下是截图
这已在Docs
中给出https://developers.google.com/places/ios-api/autocomplete#use_a_table_data_source
但这不起作用。对此我需要帮助。
答案 0 :(得分:8)
您需要创建一个类似于follwoing的扩展程序:
public extension UISearchBar {
public func setNewcolor(color: UIColor) {
let clrChange = subviews.flatMap { $0.subviews }
guard let sc = (clrChange.filter { $0 is UITextField }).first as? UITextField else { return }
sc.textColor = color
}
}
使用以下代码更改颜色:
controller.searchBar.setNewcolor(UIColor.redColor())
输出是:
<强>更新强>
对于GMSAutocompleteViewController
的searchBar文本的更改颜色,您需要执行以下代码:
let searchBarTextAttributes: [String : AnyObject] = [NSForegroundColorAttributeName: UIColor.redColor(), NSFontAttributeName: UIFont.systemFontOfSize(UIFont.systemFontSize())]
UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).defaultTextAttributes = searchBarTextAttributes
将文字更改为如下图所示:
如果您希望更改占位符文字及其searchBar
的颜色。您需要执行以下代码:
let placeholderAttributes: [String : AnyObject] = [NSForegroundColorAttributeName: UIColor.whiteColor(), NSFontAttributeName: UIFont.systemFontOfSize(UIFont.systemFontSize())]
let attributedPlaceholder: NSAttributedString = NSAttributedString(string: "Find a place", attributes: placeholderAttributes)
UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).attributedPlaceholder = attributedPlaceholder
它将显示如下:
答案 1 :(得分:4)
使用 Swift 3
的Bellow代码if #available(iOS 9.0, *) {
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).defaultTextAttributes = [NSForegroundColorAttributeName: UIColor.green]
} else {
// Fallback on earlier versions
}
希望这有帮助。
答案 2 :(得分:1)
您可以使用UIAppearance protocol获取iOS 5.0及更高版本中可用的类的外观代理。
实际上有两种方法可以自定义对象的外观并获取类的外观代理。
appearance
。appearanceWhenContainedIn
。您可以应用此示例代码:
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setDefaultTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]}];
您还可以尝试此SO帖子中提供的其他选项 - UISearchBar text color change in iOS 7。
我希望能涵盖您的问题。快乐的编码!
答案 3 :(得分:0)
对于Swift 4 iOS 12
"%string%"
答案 4 :(得分:0)
迅速5:
let searchBarTextAttributes: [NSAttributedString.Key : AnyObject] = [NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): UIColor.red, NSAttributedString.Key(rawValue: NSAttributedString.Key.font.rawValue): UIFont.systemFont(ofSize: 14.0)]
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).defaultTextAttributes = searchBarTextAttributes
答案 5 :(得分:0)
这实际上非常简单,只需访问searchBar内的textField即可:
searchBar.searchTextField.defaultTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.red]