Czy jest możliwe aby zmienić kolor tekstu w pasku wyszukiwania? I nie wydaje się, aby mieć dostęp do klasy UISearchBarTextField ...Zmień kolor tekstu Pasek wyszukiwania iOS
Odpowiedz
po pierwsze, znaleźć podrzędny w UISearchBar
, następnie znaleźć UITextField
w sub View następnie zmienić kolor
Spróbuj kod: -
for(UIView *subView in searchBar.subviews){
if([subView isKindOfClass:UITextField.class]){
[(UITextField*)subView setTextColor:[UIColor blueColor]];
}
}
dla iOS 5 +
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor blueColor]];
w iOS 5, właściwy sposób to zrobić przy użyciu protokołu wygląd.
Na przykład:
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor blueColor]];
Świetna odpowiedź. Dzięki – Nekto
Można ustawić atrybuty jak tak, to nazywamy to w kontrolerze.
[[UITextField appearanceWhenContainedIn:[self class], nil] setDefaultTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName:[UIFont systemFontOfSize:14]}];
* pamiętać, że to się zmieni wszystkie UITextFields w kontrolerze
Oryginalny UISearchBar
hierarchia zmieniła się od oryginalnego postu i UITextField
nie jest bezpośrednim subview. Poniższy kod nie zawiera żadnych założeń dotyczących hierarchii UISearchBar
.
Jest to przydatne również wtedy, gdy nie chcesz zmieniać koloru tekstu paska wyszukiwania w całej aplikacji (np. Za pomocą 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];
}
}
}
Zastosowanie:
[MyClass setAllTextFieldsWithin:self.mySearchBar toColor:[UIColor blueColor]];
Robi to w ten sposób prawdopodobnie będzie działać, ale jest krucha w przypadku, jabłko zdecyduje się grać z hierarchią widoku, proszę zobaczyć moje rozwiązanie poniżej przy użyciu protokołu wygląd. –