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.