static CTFrame CreateFrame (LayoutInfo li)
{
if (string.IsNullOrEmpty (li.Text))
return null;
using (CTFramesetter framesetter = new CTFramesetter (CreateAttributedString (li))) {
CGPath path = new CGPath ();
bool ellipsize = li.Width.HasValue && li.TextTrimming == TextTrimming.WordElipsis;
path.AddRect (new RectangleF (0, 0, li.Width.HasValue && !ellipsize ? li.Width.Value : float.MaxValue, li.Height ?? float.MaxValue));
return framesetter.GetFrame (new NSRange (0, li.Text.Length), path, null);
}
}