@
galenzhao 谢谢,不过这个我试过了,如果单纯按照他的方式来计算,是不行的,
这个计算公式:
lineOrigin.y = lineOrigin.y - descent - self.font.descender;
并不能保证绘制出来每行的高度间距一致,因为中英文CTLine的ascent,descent都不一样。不过倒是效果跟我的这个计算方式一样了:
if (i > 0)
{
// 第二行之后需要计算
frameY = frameY - globalLineLeading - lineAscent;
lineOrigin.y = frameY;
} else
{
// 第一行可直接用
frameY = lineOrigin.y;
}
// 调整坐标
CGContextSetTextPosition(contextRef, lineOrigin.x, lineOrigin.y);
CTLineDraw(line, contextRef);
// 微调
frameY = frameY - lineDescent;