4

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;
Goober
  • 13,146
  • 50
  • 126
  • 195

2 Answers2

5

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.

Ender2050
  • 6,912
  • 12
  • 51
  • 55
3

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.

Jason
  • 86,222
  • 15
  • 131
  • 146