Question

I have a string of text containing both plain and italic text. How do I represent this using a UILabel?

"I am plain text whereas I am italic text

var someText = "I am plain text whereas I am italic text

UILabel myLabel = new UILabel(new RectangleF(0,0,100,40));
myLabel.Text = someText;
Était-ce utile?

La solution

I prefer to concatenate like this:

var text = new NSMutableAttributedString (
               str: "I am plain text whereas ", 
               font: UIFont.SystemFontOfSize (14f)
               );

text.Append (new NSMutableAttributedString (
               str: "I am italic text.", 
               font: UIFont.ItalicSystemFontOfSize (14f)
               ));

var label = new UILabel () { AttributedText = text };

Seems easier to maintain this way instead of counting characters. But I totally agree - all of this AttributedString stuff is hacky. Jason's link to the docs was helpful, thanks.

Autres conseils

UILabel has an AttributedText property, which you can use to style text.

var prettyString = new NSMutableAttributedString ("UITextField is not pretty!");
prettyString.SetAttributes (firstAttributes.Dictionary, new NSRange (0, 11));
prettyString.SetAttributes (secondAttributes.Dictionary, new NSRange (15, 3));
prettyString.SetAttributes (thirdAttributes.Dictionary, new NSRange (19, 6));

A complete sample is available in the Xamarin Docs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top