2015-12-26 4 views
3

Я выполнил поиск различных решений для выполнения этой задачи, но они либо находятся в объективе C, либо связаны с заменой изображения увеличительного стекла.Изменение цвета увеличительного стекла UISearchbar, цвета PlaceHolder и цвета X

enter image description here

enter image description here

Предыдущие сообщения я посмотрел на:

Change color of magnifying glass

How to change UISearchBar Placeholder and image tint color?

Причина я не хочу, чтобы заменить изображение увеличительного стекла, потому что цвет страницы динамичен, и 100+ цветовых сочетаний

Любая помощь по изменению UISearchbar увеличительного стекла цвет, PlaceHolder цвет и X цвет будет в значительной степени быть оценены

+0

Вы пробовали те сообщения, на которые смотрели? Забудьте о замене изображения. Как насчет цвета и цвета оттенков? Вы что-нибудь пробовали? –

+0

Вы уже изучили этот учебник: http://www.appcoda.com/custom-search-bar-tutorial/ – Khuong

+0

@ Mr.T Я заменил оттенок, который изменяет цвет шрифта набранного текста и кнопку отмены но не заполнитель или кнопка X. – SlopTonio

ответ

9

Цель 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() 
1

Ответ 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 
Смежные вопросы