Я пытаюсь нарисовать текст с помощью CoreGraphics. К сожалению, нет метода, который возвращает ширину текста. Я пытался получать ширину с помощью этого метода:Измерение ширины текста
private float GetTextWidth(CGContext context, string text)
{
float startWidth,
endWidth,
textWidth;
startWidth = context.TextPosition.X;
context.SetTextDrawingMode(CGTextDrawingMode.Invisible);
context.ShowText(text);
endWidth = context.TextPosition.X;
textWidth = endWidth - startWidth;
return textWidth;
}
, но если я хочу многострочный текст мне также нужно принимать во внимание шрифт. Так я думал об использовании UILable и получить значения из него делают следующее:
RectangleF lableRect = new RectangleF((float)rect.X, (float)rect.Y, (float)rect.Width, (float)rect.Height);
UILabel lable = new UILabel(lableRect){
Font = UIFont.FromName(font.Family.ToString(), (float)font.Size),
Text = text,
};
SizeF uiSize = lable.StringSize(lable.Text, lable.Font);
Хотя высота, кажется, хорошо, ширина не является правильным. Любая идея почему?
после выполнения некоторых тестов GetTextWidth возвращает ту же ширину, что и label.StringSize и nsstring.stingSize, поэтому я полагаю, что все работает, спасибо. – alecnash
Просто маленький вопрос, есть ли способ найти длину усеченной строки? – alecnash
То, что я не знаю с головы. Сожалею. – Krumelur