2015-12-26 210 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放大鏡顏色,佔位符顏色,和X顏色任何幫助將大大理解

+0

你有沒有試過你看過的帖子?忘記替換圖像。關於佔位符顏色和色調顏色怎麼樣?你嘗試過什麼嗎? –

+0

你看看這個教程嗎:http://www.appcoda.com/custom-search-bar-tutorial/ – Khuong

+0

@ Mr.T我已經替換了tintcolor,它改變了輸入文本的字體顏色和取消按鈕但不是佔位符或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]; 

夫特:

// 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