Parcouru la documentation et je n'ai rien trouvé pour changer la couleur de UISearchBar. Quelqu'un sait comment le changer? Il n'est pas tout textColor bien :/
Je n'ai pas testé le post original du code ou du présent code, mais on dirait que ça devrait marcher.
-wkw
3
Voici une catégorie qui ajoute cette fonctionnalité:
@implementationUISearchBar(UISearchBar_TextColor)-(UITextField*)field {//HACK: This may not work in future iOS versionsfor(UIView*subview inself.subviews){if([subview isKindOfClass:[UITextFieldclass]]){return(UITextField*)subview;}}returnnil;}-(UIColor*)textColor {returnself.field.textColor;}-(void)setTextColor:(UIColor*)color {self.field.textColor = color;}@end
2
appearanceWhenContainedIn est obsolète dans iOS 9 , donc nous devons utiliser la méthode ci-dessous pour iOS 9 et au-dessus.
C'était la seule chose qui a fonctionné pour moi. Mon application a une transparence de la barre de navigation pour laisser le dégradé d'arrière-plan, et je devine que la barre de recherche prend cette apparence depuis mon paramètres d'apparence UISearchBar ont été largement ignorés, à une exception près:
UISearchBar.appearance().tintColor =UIColor.red
De cela, le bouton Annuler et le curseur d'insertion du texte en rouge. Le texte de l'espace réservé était gris clair.
Noter que: UISearchBar.appearance().barStyle = .blackTranslucent ne fonctionne pas - il a dû être mis sur l'instance. Cela a également eu aucun effet visible sur la barre de recherche (il était encore transparents comme la barre de navigation); il vient de faire de la recherche de texte blanc.
1
Avec iOS 11 la barre de recherche est appelé à devenir une partie de la barre de navigation qui, comme vous vous en doutez, ajoute toutes sortes de nouvelles "fonctionnalités".
Je pense que c'est un bug mais j'ai trouvé que j'avais besoin de faire ce qui suit pour modifier le texte (et le bouton annuler) couleur:
J'ai trouvé que la barre de style, lorsqu'il est laissé par défaut"," du texte noir peu importe la teinte de la couleur, etc. Lorsque la valeur soit Minime ou important texte était visible.
Après le réglage de la searchController dans le navigationItem pour iOS 11, j'ai trouvé que de tenter de définir la textColor via UIAppearance pour tout UITextField dans un UISearchBar avait aucun effet, mais un aspect personnalisé de la propriété que l'on appelle simplement la régulière textColor a très bien fonctionné.
//Implement a custom appearance property via a UITextField category@interfaceUITextField(SearchBarTextColor)@property(nonatomic, strong)UIColor* textColorWorkaround UI_APPEARANCE_SELECTOR;@end@implementationUITextField(SearchBarTextColor)-(UIColor*)textColorWorkaround {returnself.textColor;}-(void)setTextColorWorkaround:(UIColor*)textColor {self.textColor = textColor;}@end
Vous pouvez effectuer les opérations suivantes: Viens d'obtenir le searchField bien de la barre de recherche, puis modifiez ses textColor propriété.
Que c'est! Maintenant, vous manipuler le champ de toutes les manières possibles.
iOS 8: Voir https://stackoverflow.com/a/28183058/308315
iOS 6 /7:
Fonctionne sur iOS 7 et versions ultérieures:
Vous pouvez supprimer les attribut.
Mise à JOUR. En raison de
appearanceWhenContainedIn
est obsolète dans iOS 9, voir le Dishant la réponse ci-dessous: https://stackoverflow.com/a/38893352/2799722Je soupçonne que vous pourriez utiliser les techniques décrites dans ce post
Modifiant le code présenté il y a un peu, on sous-classe UISearchBar:
Puis de la mise en œuvre:
Je n'ai pas testé le post original du code ou du présent code, mais on dirait que ça devrait marcher.
-wkw
Voici une catégorie qui ajoute cette fonctionnalité:
appearanceWhenContainedIn est obsolète dans iOS 9 , donc nous devons utiliser la méthode ci-dessous pour iOS 9 et au-dessus.
Pour iOS11, j'ai trouvé cela a fonctionné:
Après le réglage de la
searchController
dans lenavigationItem
la recherche de texte est noir sur noir. Pour le rendre blanc, je l'ai eu à faire:C'était la seule chose qui a fonctionné pour moi. Mon application a une transparence de la barre de navigation pour laisser le dégradé d'arrière-plan, et je devine que la barre de recherche prend cette apparence depuis mon paramètres d'apparence
UISearchBar
ont été largement ignorés, à une exception près:De cela, le bouton Annuler et le curseur d'insertion du texte en rouge. Le texte de l'espace réservé était gris clair.
Noter que:
UISearchBar.appearance().barStyle = .blackTranslucent
ne fonctionne pas - il a dû être mis sur l'instance. Cela a également eu aucun effet visible sur la barre de recherche (il était encore transparents comme la barre de navigation); il vient de faire de la recherche de texte blanc.Avec iOS 11 la barre de recherche est appelé à devenir une partie de la barre de navigation qui, comme vous vous en doutez, ajoute toutes sortes de nouvelles "fonctionnalités".
Je pense que c'est un bug mais j'ai trouvé que j'avais besoin de faire ce qui suit pour modifier le texte (et le bouton annuler) couleur:
J'ai trouvé que la barre de style, lorsqu'il est laissé par défaut"," du texte noir peu importe la teinte de la couleur, etc. Lorsque la valeur soit Minime ou important texte était visible.
Voici un nettoyeur approche:
Modifié la catégorie proposée par David Foster (@david foster) pour travailler sur iOS 8.
Après le réglage de la
searchController
dans lenavigationItem
pour iOS 11, j'ai trouvé que de tenter de définir latextColor
viaUIAppearance
pour toutUITextField
dans unUISearchBar
avait aucun effet, mais un aspect personnalisé de la propriété que l'on appelle simplement la régulièretextColor
a très bien fonctionné.Et d'utiliser ensuite comme suit:
P. S. Le même truc m'a aidé à la couleur de l'apparence inaccessible étiquettes de
UIDatePicker
etUIPickerView