Search code examples
c#xamarin.iosuilabelxamarinitalic

C# Monotouch/Xamarin.iOS - UILabel with both plain and italic text in a single string


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;

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.