Je prévoyais d'utiliser NSAttributedString pour mettre en évidence des parties de chaînes avec la requête correspondante de la recherche d'un utilisateur. Cependant, je ne peux pas trouver un équivalent iOS de NSBackgroundColorAttributeName
-il n'y a pas de kCTBackgroundColorAttributeName
. Est-ce qu'une telle chose existe, semblable à la façon dont NSForegroundColorAttributeName
devient kCTForegroundColorAttributeName
?Attribut NSBackgroundColorAttributeName dans NSAttributedString sur iOS?
Répondre
Non, un tel attribut n'existe pas dans le texte principal, vous devrez dessiner vos propres rectangles sous le texte pour le simuler.
Fondamentalement, vous devrez déterminer quel rectangle (s) à remplir pour une plage donnée dans la chaîne. Si vous faites votre mise en page avec un CTFramesetter
qui produit un CTFrame
, vous devez obtenir ses lignes et leurs origines en utilisant CTFrameGetLines
et CTFrameGetLineOrigins
.
Ensuite, parcourez les lignes et utilisez CTLineGetStringRange
pour déterminer les lignes qui font partie de la plage que vous souhaitez mettre en évidence. Pour obtenir les rectangles à remplir, utilisez CTLineGetTypographicBounds
(pour la hauteur) et CTLineGetOffsetForStringIndex
(pour le décalage horizontal et la largeur).
Bonne réponse. C'est dommage qu'un attribut simple ne soit pas là pour remplacer tout ce code. – kevboh
Mon projet DTCoreText prend en charge la mise en surbrillance de la même manière que sur Mac. Vous avez une méthode initWithHTMLData NSAttributedString pour obtenir le HTML de formulaire à la chaîne attribuée et une classe d'affichage qui affiche correctement les chaînes attribuées avec de nombreuses fonctionnalités supplémentaires sur CATextLayer. – Cocoanetics
NSBackgroundColorAttributeName est disponible dans iOS 6, et vous pouvez l'utiliser par ce qui suit:
[_attributedText addAttribute: NSBackgroundColorAttributeName value:[UIColor yellowColor] range:textRange];
[_attributedText drawInRect:rect];
drawInRect:
soutiendra NSBackgroundColorAttributeName et tous les NS * NomsAttribut pris en charge par iOS 6.
Pour CTFrameDraw() il n'est pas pris en charge pour la couleur du texte d'arrière-plan.
code:
- (void)drawRect:(CGRect)rect {
// First draw selection/marked text, then draw text
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
[_attributedText drawInRect:rect];
CGContextRestoreGState(context);
// CTFrameDraw(_frame, UIGraphicsGetCurrentContext());
}
Génial, merci pour la mise à jour! – kevboh
- 1. NSAttributedString désarchivage dans iOS
- 2. Conversion NSData à NSAttributedString sur iOS
- 3. NSAttributedString est-il disponible avant iOS 6?
- 4. Comment faire correspondre HTML à dans NSAttributedString dans iOS
- 5. Puis-je utiliser NSAttributedString dans Core Text dans iOS?
- 6. Personnalisé heightForRowAtIndexPath (CGSize sizeWithFont) avec NSAttributedString iOS
- 7. comment définir des attributs dans NSAttributedString dans iOS?
- 8. Attribut d'interligne iOS sur NSMutableAttributedString
- 9. HTML from NSAttributedString
- 10. NSAttributedString - Quel est l'attribut à utiliser pour la couleur d'arrière-plan du texte?
- 11. Clics NSAttributedString
- 12. Comment puis-je dessiner NSAttributedString dans iOS5?
- 13. iOS: comment faire fonctionner NSAttributedString-Additions-for-HTML?
- 14. intégrer des informations dans NSAttributedString
- 15. Comment définir la couleur d'un NSAttributedString sur iPad?
- 16. Changer la couleur d'arrière-plan sur NSAttributedString
- 17. NSAttributedString boundingRectWithSize donne différentes hauteurs entre iOS 6 et iOS 7
- 18. NSAttributedString - enumerateAttributesInRange provoque un crash?
- 19. NSAttributedString: wrapping + truncation
- 20. NSAttributedString position de texte
- 21. Comment convertir NSData en NSAttributedString avec l'aide initWithRTFD de NSAttributedString
- 22. Comment définirHighlightedTextColor @ NSAttributedString
- 23. Direction d'écriture NSAttributedString
- 24. Exemple NSAttributedString avec NSStrikethroughColorAttributeName
- 25. Core Text couleur de fond pour iOS 6
- 26. Maintenir Annuler dans modifié, lié, NSAttributedString
- 27. Texte d'analyse de plist à NSAttributedString
- 28. Objectif C - NSAttributedString étendre les attributs?
- 29. NSAttributedString drawAtPoint et drawInRect - Discordances
- 30. La variable n'est pas NSAttributedString?
Voir si cela aide http://stackoverflow.com/questions/5424003/changing-background-color-on-nsattributedstring –
Merci, malheureusement depuis NSAttributedString est mis en CoreText je don Je ne pense pas qu'il existe des vues pour lesquelles je peux changer la couleur de fond. – kevboh
@kevboh J'ai écrit un HighlightLabel (http://github.com/dineshrajas/HighlightLabel). Allez-y, si vous voulez encore en avoir besoin. –