2016-12-30 4 views
2

J'utilise NSAttributeString pour définir grève sur mon texte, je le veux étendre sur whitespace.Je veux que mon texte frappe à travers étendre sur les espaces

Je définis déjà la plage correcte, mais la barrette couvre uniquement les caractères du texte. La traversée ignore les espaces sauf si j'ajoute du texte non vide avant et après.

Comment puis-je faire en sorte que la frappe s'étende sur les espaces sans texte supplémentaire?

enter image description here

+3

S'il vous plaît partager votre code que vous avez essayé jusqu'à présent –

+0

Vous ne pouvez pas le faire directement parce que ce comportement est natif! vous pouvez faire un tour comme @Nirav D a suggéré dans sa réponse! – Lion

Répondre

2

Je ne l'ai pas trouvé de solution, mais avec votre dernière option signifie ajouter premier et le dernier caractère . avec l'espace vous pouvez essayer une chose. Définissez le NSForegroundColorAttributeName de ce premier et dernier caractère sur la couleur d'arrière-plan de l'étiquette ou définissez NSFontAttributeName avec UIFont.systemFont(ofSize: 0.1). Donc ça va aller comme ça. Vous avez spécifiez pas votre langue de réponse, donc je suis dans le dernier affichage réponse Swift 3.

let attributedText = NSMutableAttributedString(string: self.lbl.text!) 
attributedText.addAttributes([NSStrikethroughStyleAttributeName: 2], range: NSMakeRange(0, self.lbl.text!.characters.count)) 
self.lbl.attributedText = attributedText 

Avant d'utiliser NSForegroundColorAttributeName & NSFontAttributeName enter image description here

Maintenant, vous pouvez utiliser soit NSForegroundColorAttributeName ou NSFontAttributeName pour cacher d'abord et le dernier caractère dot(.).

let attributedText = NSMutableAttributedString(string: self.lbl.text!) 
attributedText.addAttributes([NSStrikethroughStyleAttributeName: 2], range: NSMakeRange(0, self.lbl.text!.characters.count)) 
attributedText.addAttributes([NSForegroundColorAttributeName: UIColor.white], range: NSMakeRange(0, 1)) 
attributedText.addAttributes([NSForegroundColorAttributeName: UIColor.white], range: NSMakeRange(self.lbl.text!.characters.count - 1, 1)) 
//Or either Set NSFontAttributeName instead of NSForegroundColorAttributeName 
//attributedText.addAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 0.1)], range: NSMakeRange(0, 1)) 
//attributedText.addAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 0.1)], range: NSMakeRange(self.lbl.text!.characters.count - 1, 1)) 
self.lbl.attributedText = attributedText 

Après avoir utilisé NSForegroundColorAttributeName ou NSFontAttributeName enter image description here

+0

intéressant, j'ai fini par utiliser une couleur claire. – kaala

+0

@kaala Glad ça marche :) –