J'ai une chaîne comme celle-ci
var str = "@text1 this is good @text1"
Maintenant, remplacez-le text1
par une autre chaîne, par exemple t 1
. Je peux remplacer le texte, mais je ne peux pas le mettre en gras. Je veux mettre en gras la nouvelle chaîne t 1
, de sorte que la sortie finale soit:
@t 1 c'est bien @t 1
Comment puis-je le faire?
Tous les exemples que je vois sont en Objective-C, mais je veux le faire dans Swift.
Merci d'avance.
ios
swift
ios8
nsmutableattributedstring
user2413621
la source
la source
Réponses:
Usage:
Résultat:
Voici une manière intéressante de créer une combinaison de textes gras et normaux dans une seule étiquette ainsi que d'autres méthodes bonus.
Extension: Swift 5. *
la source
func bold(_ text:String, _ size:CGFloat)
. J'ai ajouté de la taille au gras pour pouvoir le contrôler de l'extérieur. De plus, j'ai manqué laAvenirNext-Medium
police dans cette fonction, il m'a donc fallu quelques minutes pour comprendre pourquoi je ne peux pas voir ma police. La tête haute.Lorsque vous souhaitez l'attribuer à une étiquette:
la source
modifier / mettre à jour: Xcode 8.3.2 • Swift 3.1
Si vous connaissez HTML et CSS, vous pouvez l'utiliser pour contrôler facilement le style de police, la couleur et la taille de votre chaîne attribuée comme suit:
la source
<link href=\"https://fonts.googleapis.com/css?family=Frank+Ruhl+Libre\" rel=\"stylesheet\"> <span style=\"font-family: 'Frank Ruhl Libre', sans-serif;\">שלום</span>
Si vous travaillez avec des chaînes localisées, vous ne pourrez peut-être pas compter sur la chaîne en gras toujours à la fin de la phrase. Si tel est le cas, ce qui suit fonctionne bien:
Par exemple, la requête "bla" ne correspond à aucun élément
la source
J'ai étendu la bonne réponse de David West afin que vous puissiez saisir une chaîne et lui indiquer toutes les sous-chaînes que vous souhaitez enhardir:
Et puis appelez-le comme ceci:
Cela enhardira toutes les sous-chaînes que vous souhaitez mettre en gras dans votre chaîne donnée
la source
C'est le meilleur moyen que j'ai trouvé. Ajoutez une fonction que vous pouvez appeler de n'importe où et ajoutez-la à un fichier sans classe comme Constants.swift, puis vous pouvez enhardir les mots dans n'importe quelle chaîne, à de nombreuses reprises en appelant juste UNE LIGNE de code:
Pour aller dans un fichier constants.swift:
Ensuite, vous pouvez simplement appeler cette ligne de code pour n'importe quel UILabel:
la source
S'appuyant sur les excellentes réponses de Jeremy Bader et David West, une extension Swift 3:
Usage:
la source
usage....
deux centimes...
la source
En acceptant comme valide la réponse de Prajeet Shrestha dans ce fil, je voudrais étendre sa solution en utilisant le Label s'il est connu et les traits de la police.
Swift 4
la source
Swift 4 et supérieur
Pour Swift 4 et supérieur, c'est un bon moyen:
Dans l'étiquette, le texte ressemble à: "Salut John "
la source
Un moyen très simple de le faire.
Pour plus de détails, cliquez ici: https://github.com/iOSTechHub/AttributedString
la source
apply
méthode avec la police que vous voulezCela pourrait être utile
la source
Swift 3.0
Convertissez le HTML en chaîne et changez de police selon vos besoins.
la source
Data("I'm a normal text and <b>this is my bold part . </b>And I'm again in the normal text".utf8)
et définir le codage des caractères dans les options[NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue]
Utilisez simplement un code comme celui-ci:
la source
deux liner dans swift 4:
la source
Swift 5.1 utilise
NSAttributedString.Key
au lieu deNSAttributedStringKey
la source
Pour -> Recherche Télévision par taille
Unidirectionnel utilisant NString et sa plage
un autre sans utiliser NString et sa gamme
swift5
la source
Améliorer la réponse de Prajeet Shrestha: -
Vous pouvez créer une extension générique pour NSMutableAttributedString qui implique moins de code. Dans ce cas, j'ai choisi d'utiliser la police système, mais vous pouvez l'adapter afin de pouvoir saisir le nom de la police en tant que paramètre.
la source
Vous pouvez le faire en utilisant la méthode personnalisée simple décrite ci-dessous. Vous devez donner la chaîne entière dans le premier paramètre et le texte en gras dans le deuxième paramètre. J'espère que cela aidera.
utilisation: initalString = Je suis un garçon
label.attributedText = getAttributedBoldString (str: initalString, boldTxt: "Garçon")
chaîne résultante = je suis un garçon
la source