Évolution spécifique de la couleur du texte à l'aide de NSMutableAttributedString en Swift
La question que je vais avoir, c'est que je veux être en mesure de changer le textColor de certains de texte dans un TextView. Je suis l'aide d'une chaîne concaténée, et je veux juste les chaînes de je suis ajoutant dans le TextView du texte. Il semble que ce que je veux utiliser est NSMutableAttributedString
, mais je ne parviens pas à trouver toutes les ressources de la façon de l'utiliser dans Swift. Ce que j'ai à ce jour est quelque chose comme ceci:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
À partir d'ici, je sais que j'ai besoin de trouver la gamme de mots qui ont besoin d'avoir leur textColor changé, puis les ajouter à la attribué chaîne. Ce que j'ai besoin de savoir, c'est comment trouver le bon chaînes à partir de la attributedString, et puis changer leur textColor.
Depuis que j'ai trop faible d'un cote je ne peux pas répondre à ma propre question, mais voici la réponse que j'ai trouvé
J'ai trouvé ma réponse par la traduction de la traduction du code de
Changer les attributs des sous-chaînes dans un NSAttributedString
Voici l'exemple de la mise en œuvre de Swift:
let string = "A \(stringOne) and \(stringTwo)"
var attributedString = NSMutableAttributedString(string:string)
let stringOneRegex = NSRegularExpression(pattern: nameString, options: nil, error: nil)
let stringOneMatches = stringOneRegex.matchesInString(longString, options: nil, range: NSMakeRange(0, attributedString.length))
for stringOneMatch in stringOneMatches {
let wordRange = stringOneMatch.rangeAtIndex(0)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.nameColor(), range: wordRange)
}
textView.attributedText = attributedString
Depuis que je suis désireux de changer le textColor de plusieurs Chaînes de caractères, je vais faire une fonction d'aide pour gérer cela, mais cela fonctionne pour la modification de la textColor.
- Savez-vous comment faire de l'Objective-C? Avez-vous tenté de réécrire le même code Swift?
Vous devez vous connecter pour publier un commentaire.
Je vois que vous avez répondu à la question quelque peu, mais afin de fournir un peu plus concis, sans l'aide de regex pour répondre à la question titre:
De changer la couleur d'une longueur de texte dont vous avez besoin pour connaître le début et la fin de l'index de la couleur-à-être des caractères dans la chaîne par exemple
Alors vous convertir attribué chaîne et d'utilisation "ajouter un attribut" avec NSForegroundColorAttributeName:
Une liste de plus d'attributs standard, vous pouvez peut être trouvée dans La documentation d'Apple
main_string
,string_to_color
etrange
n'ont jamais été muté. Envisager de les changerlet
constante?SWIFT 5
SWIFT 4.2
Swift 2.1 Mise À Jour:
self.helpText
est unUILabel
prise.Réponse est déjà donnée dans les messages précédents mais j'ai une autre façon de faire ce
Swift 3x :
Espère que cela aide quelqu'un!
De Chris réponse a été d'une grande aide pour moi, j'ai donc utilisé son approche et transformé en un func que je peux réutiliser. Ce laissez-moi d'attribuer une couleur à une sous-chaîne tout en permettant au reste de la chaîne à une autre couleur.
Swift 4.1
par exemple si vous voulez changer la police de caractères dans la barre de navigation:
Vous pouvez utiliser cette extension
Je l'ai tester sur
swift 4.2
Swift 4.2 et Swift 5 colorise les parties de la chaîne.
Un moyen très facile à utiliser NSMutableAttributedString lors de l'extension de la Chaîne. Ce peut aussi être utilisé pour colourize plus d'un mot dans l'ensemble de la chaîne.
Ajouter un nouveau fichier pour les extensions de Fichier -> New -> Nouveau Fichier avec le nom de ex. "NSAttributedString+TextColouring" et ajoutez le code
Maintenant, vous pouvez utiliser à l'échelle mondiale, à tout viewcontroller vous voulez:
Swift 2.2
.CGColor
.Sur la base des réponses avant que je crée une chaîne d'extension de
Vous pouvez passer les attributs du texte à la méthode
Appeler comme ça
Meilleure façon de faire de l'étiquette avec différents style comme la couleur, la police, etc. est l'utilisation de la propriété "Attribué" dans les Attributs de l'Inspecteur. Il suffit de choisir la partie de texte et de le modifier comme vous voulez
Swift 4.1
J'ai changé à partir de ce
Dans Swift 3
Et ce dans Swift 4.0
à Swift 4.1
Fonctionne très bien
Pour tous ceux qui sont à la recherche de "l'Application de couleur spécifique à plusieurs mots dans le texte", nous pouvons le faire en utilisant NSRegularExpression
Lien de référence : https://gist.github.com/aquajach/4d9398b95a748fd37e88
swift 4.2
Si vous utilisez Swift 3x et UITextView, peut-être le NSForegroundColorAttributeName ne fonctionne pas (il n'a pas de travail pour moi, peu importe ce que l'approche que j'ai essayé).
Donc, après quelques recherches, j'ai trouvé une solution.
Moyen Super facile à faire.
Pour plus de détails, cliquez ici:
https://github.com/iOSTechHub/AttributedString
Pour changer la couleur de la couleur de la police, sélectionnez d'abord attribuée à la place de la plaine comme dans l'image ci-dessous
Vous devez ensuite sélectionner le texte dans la attribué champ et sélectionnez le bouton de couleur sur le côté droit de les alignements. Cela va changer la couleur.
Vous pouvez utiliser cette méthode. J'ai mis en œuvre cette méthode dans ma commune de la classe utilitaire pour accéder à l'échelle mondiale.
Vous avez besoin de changer textview paramètres, non paramètres du attribuée chaîne
Veuillez vérifier cocoapod Prestyler: