J'ai un curseur pour une enquête qui affiche les chaînes suivantes en fonction de la valeur du curseur: "Très mauvais, mauvais, correct, bon, très bon".
Voici le code du curseur:
- (IBAction) sliderValueChanged:(UISlider *)sender {
scanLabel.text = [NSString stringWithFormat:@" %.f", [sender value]];
NSArray *texts=[NSArray arrayWithObjects:@"Very Bad", @"Bad", @"Okay", @"Good", @"Very Good", @"Very Good", nil];
NSInteger sliderValue=[sender value]; //make the slider value in given range integer one.
self.scanLabel.text=[texts objectAtIndex:sliderValue];
}
Je veux que «Very Bad» soit rouge, «Bad» soit orange, «Okay» soit jaune, «Good» et «Very Good» soit vert.
Je ne comprends pas comment utiliser NSAttributedString
pour y parvenir.
Réponses:
Il n'est pas nécessaire d'utiliser
NSAttributedString
. Tout ce dont vous avez besoin est une simple étiquette avec le bontextColor
. De plus, cette solution simple fonctionnera avec toutes les versions d'iOS, pas seulement iOS 6.Mais si vous souhaitez utiliser inutilement
NSAttributedString
, vous pouvez faire quelque chose comme ceci:la source
NSAttributedString
pour cette tâche. Ce serait une chose si le texte de l'étiquette avait besoin de plusieurs attributs, mais ce n'est pas le cas. L'étiquette entière doit être une couleur à la fois.NSAttributedString
. C'est donc ce qu'ils ont demandé. La vraie question aurait dû être "Comment définir la couleur de l'étiquette en fonction de sa valeur" . J'ai souligné que la solution ne nécessite pasNSAttributedString
et a montré une réponse beaucoup plus simple. Et le PO a accepté en acceptant ma réponse beaucoup plus simple. Si le PO le voulait vraimentNSAttributedString
, il n'aurait pas accepté ma réponse. Il n'y a donc aucune raison pour les votes négatifs. J'ai répondu à la vraie question et le PO a accepté.NSForegroundColorAttributeName
clé, que j'ai eu du mal à trouver dans la documentation Apple.Utilisez quelque chose comme ça (non vérifié par le compilateur)
la source
Dans Swift 4 :
Dans Swift 3 :
Prendre plaisir.
la source
Pour Swift 5:
Pour Swift 4:
Pour Swift 3:
la source
Vous pouvez créer
NSAttributedString
OU
NSMutableAttributedString
pour appliquer des attributs personnalisés avec des plages.Attributs disponibles: NSAttributedStringKey
METTRE À JOUR:
Swift 5.1
la source
Avec Swift 4,
NSAttributedStringKey
a une propriété statique appeléeforegroundColor
.foregroundColor
a la déclaration suivante:Le code Playground suivant montre comment définir la couleur du texte d'une
NSAttributedString
instance avecforegroundColor
:Le code ci-dessous montre une
UIViewController
implémentation possible qui s'appuie surNSAttributedString
pour mettre à jour le texte et la couleur du texte d'un àUILabel
partir d'unUISlider
:Notez toutefois que vous n'avez pas vraiment besoin d'utiliser
NSAttributedString
un tel exemple et peut simplement compter surUILabel
l »text
ettextColor
propriétés. Par conséquent, vous pouvez remplacer votreupdateDisplay()
implémentation par le code suivant:la source
Mise à jour pour Swift 4.2
la source
Une doublure pour Swift:
la source