2011-08-29 21 views
7

मैं UISearchBar के इनपुट फ़ील्ड के पृष्ठभूमि रंग को बदलने की कोशिश कर रहा हूं। यह गोलाकार दृश्य है जहां आप खोज करने के लिए टेक्स्ट इनपुट करते हैं, डिफ़ॉल्ट रंग सफेद होता है।UISearchBar: इनपुट फ़ील्ड का पृष्ठभूमि रंग बदलना

for (UIView *subView in searchBar.subviews) { 
    if ([subView isKindOfClass:NSClassFromString(@"UITextField")]) { 
     UITextField *textField = (UITextField *)subView; 
     [textField setBackgroundColor:[UIColor grayColor]]; 
    } 

लेकिन यह काम नहीं करता है :(

मैं भी TextField के लिए एक छवि दृश्य डालने की कोशिश की लेकिन यह गोल देखने लगता है: मैं

ग्रे मैंने कोशिश की यह परिवर्तन करना चाहते हैं TextField से अलग है तो, किसी भी सुराग समारोह में

+0

यू चाहिए कोड में सर्चबार बनाएं, इंटरफ़ेसबिल्डर में नहीं। आईबी से बनाते समय मुझे एक ही समस्या थी खोज कोड बनाने के लिए से कोड –

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। मैं इसे कोशिश करूंगा – muc

+0

आह, मैंने किया! मैंने एक छवि के साथ textField.background सेट किया और यह काम किया, हाँ! – muc

उत्तर

8

देखो:।?

[searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"search_bar"] forState:UIControlStateNormal]; 
8

=)

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]]; 
     } 
    } 
} 
2

स्विफ्ट 2 और iOS 9 में आप कॉल कर सकते हैं:

UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).backgroundColor = UIColor.darkGrey() 

स्विफ्ट 3: स्विफ्ट 3 में

UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = UIColor.darkGrey() 
+1

मेरे लिए काम नहीं किया – SunilG

+2

यदि 'searchBarStyle' 'न्यूनतम' है तो यह काम नहीं करेगा। – enreas

+0

जैसा कि @enreas का उल्लेख है, समाधान इसलिए है: http://stackoverflow.com/a/42626728/2229062 – yohannes

2

समाधान:

if let txfSearchField = searchController.searchBar.value(forKey: "_searchField") as? UITextField { 
     txfSearchField.borderStyle = .none 
     txfSearchField.backgroundColor = .lightGray 
} 
संबंधित मुद्दे