2010-04-26 7 views
2

J'ai besoin de formater le texte dans une étiquette comme ceci:Une étiquette, deux polices différentes?

Nom d'utilisateur: texte de cet utilisateur. Cela va créer des lignes de texte supplémentaires qui vont
et ainsi de suite.

Où "nom d'utilisateur" est en gras. Cela ira dans un UILabel, qui est dans une cellule de tableau personnalisé. Existe-t-il un moyen d'obtenir ce type de mise en page?

Répondre

2

Pour ce cas relativement simple, vous pourriez être en mesure de faire semblant. Avoir une étiquette avec le nom d'utilisateur en gras, et une autre étiquette avec le texte brut dans la même position. Insérez suffisamment d'espaces avant le texte brut pour laisser de la place pour le nom d'utilisateur. Vous pouvez utiliser les méthodes UIStringDrawing pour mesurer le texte en gras et les espaces.

CGSize usernameSize = [theUsername sizeWithFont:theBoldUsernameFont]; 
CGSize spaceSize = [@" " sizeWithFont:thePlainCommentFont]; 
NSString *indentedComment = [NSString stringWithFormat:@"%*s%@" , (int)ceil(usernameSize.width/spaceSize.width) , "" , theComment]; 
+0

Vous savez, juste avant de publier cela, c'est exactement ce que j'ai commencé à faire. Il s'agit simplement de calculer le nombre d'espaces du texte du nom d'utilisateur. – 4thSpace

1

Si vous utilisez UILabel ordinaire, il n'est pas disponible. Utilisez deux étiquettes pour cette tâche.

+0

Comment obtenir l'emballage sous l'étiquette du nom d'utilisateur avec deux étiquettes? – 4thSpace

0

Vous devez utiliser UIWebView ou CoreText pour effectuer ce type de mise en page de texte avancée. Une vue Web a beaucoup de surcharge, mais elle est très flexible et vous ne pouvez pas l'utiliser efficacement dans une cellule UITableView. CoreText est bas niveau et pas très bien documenté. Vous pouvez abandonner la vue de la table et simplement disposer la table avec CSS et HTML dans la vue web, ce qui est la façon dont je le fais.

0

Vous pouvez toujours utiliser UITableViewCell mais la cellule utilise une sous-vue UIWebView. Configurez une sous-classe de cellule personnalisée à l'aide d'une méthode setter intelligente qui vous permet d'envoyer nsstrings à la méthode en les transformant en une vue plutôt formatée.

Questions connexes