我已经搜索了各种解决方案来完成这个任务,但它们要么是使用Objective C,要么涉及替换放大镜图像。
我之前查看过的文章:
我不想替换放大镜的图像,因为页面颜色是动态的,而且有100多种颜色组合
非常感谢任何关于更改UISearchbar放大镜颜色、占位符颜色和X颜色的帮助。
我已经搜索了各种解决方案来完成这个任务,但它们要么是使用Objective C,要么涉及替换放大镜图像。
我之前查看过的文章:
我不想替换放大镜的图像,因为页面颜色是动态的,而且有100多种颜色组合
非常感谢任何关于更改UISearchbar放大镜颜色、占位符颜色和X颜色的帮助。
Objective C:
NSArray *searchBarSubViews = [[self.searchBar.subviews objectAtIndex:0] subviews];
for (UIView *view in searchBarSubViews) {
if([view isKindOfClass:[UITextField class]])
{
UITextField *textField = (UITextField*)view;
UIImageView *imgView = (UIImageView*)textField.leftView;
imgView.image = [imgView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
imgView.tintColor = [UIColor whiteColor];
UIButton *btnClear = (UIButton*)[textField valueForKey:@"clearButton"];
[btnClear setImage:[btnClear.imageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
btnClear.tintColor = [UIColor whiteColor];
}
}
[self.searchBar reloadInputViews];
Swift:
// Text field in search bar.
let textField = searchController.searchBar.valueForKey("searchField") as! UITextField
let glassIconView = textField.leftView as! UIImageView
glassIconView.image = glassIconView.image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
glassIconView.tintColor = UIColor.whiteColor()
let clearButton = textField.valueForKey("clearButton") as! UIButton
clearButton.setImage(clearButton.imageView?.image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), forState: .Normal)
clearButton.tintColor = UIColor.whiteColor()
Shahil的答案已更新至Swift 3:
let textField = searchBar.value(forKey: "searchField") as! UITextField
let glassIconView = textField.leftView as! UIImageView
glassIconView.image = glassIconView.image?.withRenderingMode(.alwaysTemplate)
glassIconView.tintColor = .white
let clearButton = textField.value(forKey: "clearButton") as! UIButton
clearButton.setImage(clearButton.imageView?.image?.withRenderingMode(.alwaysTemplate), for: .normal)
clearButton.tintColor = .white
func setupPlaceHolder(text: String, textColor: UIColor) {
searchBar.searchTextField.attributedPlaceholder = NSAttributedString(
string: text,
attributes: [.foregroundColor: textColor]
)
searchBar.searchTextField.leftView?.tintColor = .white
}