2009-07-09 6 views

Répondre

30

Si les ajouts NSString UIKit, vous voulez dire les méthodes de catégorie drawAtPoint: et drawInRect :, tout ce que vous devez faire pour changer leur couleur tirée est lieu

CGContextSetFillColorWithColor(context, textColor); 

avant d'appeler drawAtPoint: ou drawInRect :. La couleur de remplissage du contexte est utilisée comme couleur du texte lorsqu'elle est dessinée manuellement.

+3

Pour obtenir 'context' dans' -drawRect: ', on voudra utiliser' UIGraphicsGetCurrentContext () '. Ou utilisez simplement la solution nettoyante @ DaveVerwer. –

0

Sur le bureau, vous pouvez utiliser NSAttributedString, mais ce n'est pas disponible sur l'iPhone. Si vous essayez simplement de mettre du texte coloré à l'écran, le plus simple est d'utiliser un UILabel. Vous pouvez manipuler le texte, la police et la couleur comme ceci:

myLabel.text = @"Your text"; 
myLabel.font = [UIFont boldSystemFontOfSize:16]; 
myLabel.textColor = [UIColor redColor]; 
1

Le NSString lui-même n'a aucune connaissance de la façon dont il sera affiché; c'est simplement des données. L'affichage est géré dans n'importe quelle vue qui présente le texte à l'utilisateur. Il peut s'agir d'un UILabel, d'un UITextfield, etc ... Ces classes stockent généralement leur texte dans une UILabel ou une propriété text. La couleur du texte peut généralement être réglé par avec:

aLabel = [[UILabel alloc] init]; 
aLabel.text = @"My String"; 
aLabel.textColor = [UIColor blackColor]; 
+0

Ce n'est pas le cas avec UIKit. UIKit a ajouté de nombreuses méthodes à NSString qui sont utiles pour calculer comment le texte sera rendu. http://developer.apple.com/library/ios/#documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html – Kekoa

50

La solution de Brad ajoute un peu de code si vous n'avez pas de contexte à portée de main (par exemple si vous le faites dans une méthode drawRect:).

La façon de le faire sans CG est

[[UIColor redColor] set]; 

ou quelle que soit la couleur que vous voulez.

+1

Merci, cela fonctionne parfaitement, simple et rapide: D! (C'est plus rapide pour NSString drawInRect que UILabel) – elslooo

+9

Nom de la méthode le plus indescriptif par Apple ?? –

+0

Après avoir essayé la solution de @Brad et obtenu l'erreur CGContextSetFillColorWithColor: contexte invalide 0x0, incapable de résoudre puis je fais défiler vers le bas et [[UIColor redColor] ensemble] sauver ma vie;) :) –

Questions connexes