Plusieurs couleurs dans un NSString
ou NSMutableStrings
ne sont pas possibles. J'ai donc entendu un peu parler de ce NSAttributedString
qui a été introduit avec l' iPad SDK 3.2 (ou environ 3.2) et est disponible sur l'iPhone à partir de l' iPhone SDK 4.0 beta .
J'aimerais avoir une chaîne qui a trois couleurs.
La raison pour laquelle je n'utilise pas 3 NSStrings séparés, c'est parce que la longueur de chacune des trois NSAttributedString
sous-chaînes change souvent et donc je préférerais, de ne pas utiliser de calculs pour repositionner 3 séparésNSString
objets .
Si c'est possible en utilisant NSAttributedString
comment puis-je faire ce qui suit - (si ce n'est pas possible avec la chaîne NSAttributed, comment feriez-vous):
Edit:
Rappelez - vous, @"first"
, @"second"
et @"third"
sera remplacé par d' autres cordes à tout moment. Donc, l'utilisation de valeurs NSRange codées en dur ne fonctionnera pas.
la source
Réponses:
Lors de la construction de chaînes attribuées, je préfère utiliser la sous-classe mutable, juste pour garder les choses plus propres.
Cela étant dit, voici comment créer une chaîne attribuée en trois couleurs:
tapé dans un navigateur. mise en œuvre de mise en garde
De toute évidence, vous n'allez pas coder en dur dans les plages comme celle-ci. Peut-être que vous pourriez faire quelque chose comme:
la source
NSAttributedString
. Cependant, il existe des choses open source, telles que OHAttributedLabel .kCTForegroundColorAttributeName
plutôt queNSForegroundColorAttributeName
.La question est déjà répondue ... mais je voulais montrer comment ajouter une ombre et changer la police avec NSAttributedString également, de sorte que lorsque les gens rechercheront ce sujet, ils n'auront pas à continuer à chercher.
Voici une version Swift ...
Avertissement! Cela fonctionne pendant 4 secondes.
Pendant 5 secondes, vous devez changer toutes les valeurs flottantes en valeurs doubles (car le compilateur ne fonctionne pas encore correctement)
Énumération rapide pour le choix de la police:
Tableau Swift pour l'accès enum (nécessaire car enum ne peut pas utiliser '-'):
Fonction de texte attribué rapidement:
première et dernière extension utilisées pour rechercher des plages dans un tableau de chaînes:
nouvelles couleurs:
mon remplacement de macro:
mon créateur de boutons avec texte attribué:
mon créateur UIView / UILabel avec texte, ombre et coins arrondis attribués:
shadow shadow générique:
extension de vue pour le style de vue:
la vue réelle a fonction de chargement:
la source
Je pense que c'est un moyen très pratique d'utiliser
regular expressions
pour trouver une plage d'application des attributs. Voici comment je l'ai fait:Je cherchais une liste d'attributs disponibles et je ne les ai pas trouvés ici et dans la première page d'une référence de classe. J'ai donc décidé de publier ici des informations à ce sujet.
Attributs standard
Les chaînes attribuées prennent en charge les attributs standard suivants pour le texte. Si la clé ne figure pas dans le dictionnaire, utilisez les valeurs par défaut décrites ci-dessous.
Guide de programmation NSAttributedString
Une référence de classe complète est ici .
la source
Cette solution fonctionnera pour n'importe quelle longueur
la source
J'ai écrit helper pour ajouter des attributs facilement:
https://github.com/shmidt/MASAttributes
Vous pouvez également installer via CocoaPods:
pod 'MASAttributes', '~> 1.0.0'
la source
Depuis iOS 7, vous pouvez utiliser
NSAttributedString
avec la syntaxe HTML:Vous devez ajouter le fichier "string.html" à votre projet, et le contenu du html peut être comme ceci:
Maintenant, vous pouvez l'utiliser
NSAttributedString
comme vous le souhaitez, même sans fichier HTML, comme par exemple:La source
la source
J'ai toujours trouvé que travailler avec des cordes attribuées était un processus extrêmement long et fastidieux.
J'ai donc créé une application Mac qui crée tout le code pour vous.
https://itunes.apple.com/us/app/attributed-string-creator/id730928349?mt=12
la source
Une solution plus simple avec l'extension de chaîne attribuée.
Essayez ceci et voyez (testé dans Swift 3 et 4)
Voici le résultat attendu:
la source
Dans Swift 4:
la source
Vous pouvez charger une
HTML
chaîne attribuéeSwift
comme suitPour charger un
html
fichier depuishttp://sketchytech.blogspot.in/2013/11/creating-nsattributedstring-from-html.html
Et configurez la chaîne selon votre attribut requis .... suivez ceci ..
http://makeapppie.com/2014/10/20/swift-swift-using-attributed-strings-in-swift/
la source
J'ai créé une bibliothèque qui rend cela beaucoup plus facile. Découvrez ZenCopy.
Vous pouvez créer des objets de style et / ou les définir sur des clés pour les référencer ultérieurement. Comme ça:
Ensuite, vous pouvez facilement construire des chaînes ET les styliser ET avoir des paramètres :)
Vous pouvez également styler les choses facilement avec des recherches d'expressions régulières!
Cela stylisera tous les mots avec '@' devant avec le style 'token'. (par exemple @jpmcglone)
Je dois toujours le faire fonctionner w / tout
NSAttributedString
a à offrir, mais je pensefontName
,fontSize
et la couverture de la couleur la plus grande partie de celui - ci. Attendez-vous à beaucoup de mises à jour bientôt :)Je peux vous aider à démarrer avec cela si vous en avez besoin. Je recherche également des commentaires, donc si cela vous facilite la vie, je dirais que la mission est accomplie.
la source
la source
Pour résoudre ce genre de problèmes, j'ai créé une bibliothèque en swift qui s'appelle Atributika.
Vous pouvez le trouver ici https://github.com/psharanda/Atributika
la source
Swift 4
Liste des attributs s'il vous plaît voir ici NSAttributedStringKey sur Apple Docs
la source
Un moyen super simple de le faire.
Pour plus de détails, cliquez ici; https://github.com/iOSTechHub/AttributedString
la source