Changer le texte UILabel mais en conservant le reste des attributs
J'ai un UILabel dans mon ViewController créé à l'aide de story-boards. La police, la taille et la couleur du texte de l'étiquette, son alignement - tous ensemble dans la table de montage séquentiel. L'étiquette dans le storyboard est connecté à la prise de courant dans mon fichier appelé p_patientNameLbl.
Maintenant, je suis en train de changer le texte de l'étiquette par programmation, comme ceci:
[self.p_patientNameLbl setText:@"Vasya"];
Je ne pouvais pas voir le nouveau texte, jusqu'à ce que j'ai réalisé que l'étiquette d'origine dans la table de montage a blanc sur fond noir, mais apparemment, j'ai modifié le texte de l'étiquette comme ci-dessus, tous les attributs de police ont été remis à zéro et maintenant, il était un texte noir sur fond noir, et donc pas vu. Une fois que j'ai mis de la couleur de base du programme:
[self.p_patientNameLbl setTextColor:[UIColor whiteColor]];
J'ai pu voir la nouvelle étiquette, mais tout le reste des attributs de police et l'alignement ont toujours tort.
Est-il un moyen de changer le texte de l'étiquette sans avoir ensuite par programme pour régler tout le reste des attributs? J'imagine, il doit y avoir un moyen, car je ne veux pas formater mon interface dans le code!
source d'informationauteur PeterD
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe parce que vous dites à Interface builder pour prendre une étiquette qui avaient pré-défini les attributs de son texte et de remplacer ce texte attribué avec texte en clair. Au lieu de
setText
ousetTextColor
vous devez utilisersetAttributedText
et de spécifier les attributs que vous souhaitez passer à l'attribuée chaîne.Voici un exemple de la façon d'appliquer une attribuées chaîne de votre étiquette de la programmation. Je ne suis pas au courant de la meilleure façon, mais en utilisant cela, vous pouvez apporter des modifications au texte ou la couleur du texte et aussi longtemps que vous mettez vos autres attributs avec eux, toutes les modifications seront appliquées correctement.
Cela fonctionne pour moi:
Une ligne de la mise en œuvre de Swift:
0x7fffffff, merci pour votre conseil, qui a fonctionné pour moi. Dans iOS6 quelques autres conseils ici n'a pas de travail, par exemple. l'extraction d'attributs et de les rattacher.
Dans mon cas, j'étais en train de perdre tout à fait quelques attributs utiles, y compris la police, alors voici ma solution:
ensuite l'appliquer à la UILabel comme ceci:
Je l'ai fait plusieurs fois pour de multiples applications. Je fais toujours mes étiquettes et le texte dans la table de montage séquentiel, changer leur taille de police, la couleur d'affichage, la valeur alpha etc dans l'éditeur. Mais par la suite, si j'ai besoin de changer le texte, j'ai fait plusieurs fois, je ne fais que cela.
c'est tout. toutes les autres propriétés par défaut sont conservés. À moins que j'ai raté quelque chose dans votre question?
Au lieu de stocker les vieux attributs et la création d'une nouvelle NSAttributedString avec le texte modifié et stockées attributs, relativement moyen le plus facile sera de: