J'ai besoin de rechercher des chaînes et de définir certains attributs avant de fusionner les chaînes, donc avoir NSStrings -> Concaténer -> Make NSAttributedString n'est pas une option, existe-t-il un moyen de concaténer attribuéString à un autre attribuéString?
ios
nsattributedstring
Imanou Petit
la source
la source
Réponses:
Je vous recommande d'utiliser une seule chaîne attribuée mutable, suggérée par @Linuxios, et voici un autre exemple de cela:
Cependant, juste pour obtenir toutes les options disponibles, vous pouvez également créer une seule chaîne attribuée mutable, faite à partir d'une NSString formatée contenant les chaînes d'entrée déjà assemblées. Vous pouvez ensuite utiliser
addAttributes: range:
pour ajouter les attributs après coup aux plages contenant les chaînes d'entrée. Je recommande cependant l'ancienne méthode.la source
Si vous utilisez Swift, vous pouvez simplement surcharger l'
+
opérateur afin de pouvoir les concaténer de la même manière que vous concaténez des chaînes normales:Vous pouvez maintenant les concaténer simplement en les ajoutant:
la source
return NSAttributedString(attributedString: result)
Helpers
ouExtensions
et mettrais cette fonction dans un fichier nomméNSAttributedString+Concatenate.swift
.Swift 3: créez simplement un NSMutableAttributedString et ajoutez-y les chaînes attribuées.
swift5 upd:
la source
Essaye ça:
Où
astring1
etastring2
sont l'NSAttributedString
art.la source
[[aString1 mutableCopy] appendAttributedString: aString2]
.NSMutableAttributedString* aString3 = [aString1 mutableCopy]; [aString3 appendAttributedString: aString2];
.result
commeNSMutableAttributedString
. ce n'est pas ce que l'auteur veut voir.stringByAppendingString
- cette méthode sera bonne2020 | SWIFT 5.1:
Vous pouvez en ajouter 2
NSMutableAttributedString
de la manière suivante:Une autre façon fonctionne avec
NSMutableAttributedString
et lesNSAttributedString
deux:Une autre façon est ...
et:
Vous pouvez le faire avec l'extension suivante:
la source
NSAttrStr1.append(NSAttrStr2)
Si vous utilisez des Cocoapods, une alternative aux deux réponses ci-dessus qui vous permet d'éviter la mutabilité dans votre propre code est d'utiliser l'excellente catégorie NSAttributedString + CCLFormat sur
NSAttributedString
s qui vous permet d'écrire quelque chose comme:Il utilise bien sûr juste
NSMutableAttributedString
sous les couvertures.Il a également l'avantage supplémentaire d'être une fonction de formatage à part entière - il peut donc faire beaucoup plus que d'ajouter des chaînes ensemble.
la source
la source
Vous pouvez essayer SwiftyFormat Il utilise la syntaxe suivante
la source