2012-05-23 19 views

Antwort

19

erstens Sie die Subview in UISearchBar finden, dann finden die UITextField in Unteransicht dann die Farbe ändern

diesen Code Versuchen: -

for(UIView *subView in searchBar.subviews){ 
      if([subView isKindOfClass:UITextField.class]){ 
       [(UITextField*)subView setTextColor:[UIColor blueColor]]; 
      } 
     } 

für ios 5 +

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

es auf diese Weise arbeitet, wird wahrscheinlich zu tun, sondern ist zerbrechlich, falls Apfel entscheidet mit der Ansichtshierarchie zu spielen, bitte meine Lösung unter Verwendung von Aussehen Protokoll sehen. –

11

Ab iOS 5, der richtige Weg, dies zu tun, wird mit dem Aussehen Protokoll.

Zum Beispiel:

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

Große Antwort. Vielen Dank – Nekto

2

Sie die Attribute wie so einstellen können, rufen Sie diese in Ihrem Controller.

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

* beachten Sie, dass diese alle UITextFields seit der ursprünglichen Nachricht in Ihrem Controller

2

Die ursprüngliche UISearchBar Hierarchie hat sich geändert ändern und die UITextField ist nicht mehr eine direkte subview. Der folgende Code macht keine Annahmen über die Hierarchie UISearchBar.

Dies ist auch nützlich, wenn Sie die Textfarbe der Suchleiste nicht für die gesamte Anwendung ändern möchten (z. B. 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]; 
     } 
    } 
} 

Verbrauch:

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