2012-05-23 13 views
8

का टेक्स्ट रंग बदलें क्या खोज बार के टेक्स्ट रंग को बदलना संभव है? मैं UISearchBarTextField वर्ग का उपयोग करने कीखोज बार ios

उत्तर

19

, सबसे पहले, आप UISearchBar में subview को खोजने लगते हैं नहीं ... तो उप दृश्य में UITextField पाते हैं तो बदल रंग

इस कोड का प्रयास करें: -

for(UIView *subView in searchBar.subviews){ 
      if([subView isKindOfClass:UITextField.class]){ 
       [(UITextField*)subView setTextColor:[UIColor blueColor]]; 
      } 
     } 
iOS 5 के लिए

+

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor blueColor]]; 
+0

इस तरह शायद काम करते हैं लेकिन भंगुर है जाएगा में मामला सेब दृश्य पदानुक्रम के साथ खेलने का फैसला करता है यह कर रहा है, कृपया उपस्थिति प्रोटोकॉल का उपयोग कर नीचे मेरी समाधान देखते हैं। –

11

आईओएस 5, यह करने के लिए सही तरीके से के रूप में उपस्थिति प्रोटोकॉल का उपयोग कर रहा है।

उदाहरण के लिए:

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor blueColor]]; 
+1

ग्रेट उत्तर। धन्यवाद – Nekto

2

तुम इतनी जैसी विशेषताओं के सेट कर सकते हैं, अपने नियंत्रक में इस कहते हैं।

[[UITextField appearanceWhenContainedIn:[self class], nil] setDefaultTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName:[UIFont systemFontOfSize:14]}]; 

* नोट करें कि यह अपने नियंत्रक

2

मूल UISearchBar पदानुक्रम मूल पोस्ट के बाद से बदल गया है और UITextField अब एक प्रत्यक्ष subview है में सभी UITextFields बदल जाएगा। नीचे दिया गया कोड UISearchBar पदानुक्रम के बारे में कोई धारणा नहीं करता है।

यह तब भी उपयोगी होता है जब आप संपूर्ण एप्लिकेशन में खोज बार के टेक्स्ट रंग को बदलना नहीं चाहते हैं (यानी appearanceWhenContainedIn का उपयोग कर)।

/** 
* A recursive method which sets all UITextField text color within a view. 
* Makes no assumptions about the original view's hierarchy. 
*/ 
+(void) setAllTextFieldsWithin:(UIView*)view toColor:(UIColor*)color 
{ 
    for(UIView *subView in view.subviews) 
    { 
     if([subView isKindOfClass:UITextField.class]) 
     { 
      [(UITextField*)subView setTextColor:color]; 
     } 
     else 
     { 
      [self setAllTextFieldsWithin:subView toColor:color]; 
     } 
    } 
} 

उपयोग:

[MyClass setAllTextFieldsWithin:self.mySearchBar toColor:[UIColor blueColor]];