如何使CGContextShowTextAtPoint()自动缩小某个矩形中的文本

时间:2012-04-18 12:07:20

标签: objective-c ios text size cgcontext

我正在使用CGContextShowTextAtPoint()手动绘制文本,因为此文本被放置在图像上并且可读取我首次使用较大的白色lineWidth然后使用较小的黑色lineWidth绘制此文本,因为阴影不会给出要求的可读性。图像不是静态的,所以我不能使用任何静态图像而不是文本。所以我需要绘制真正的文本对象。但是,如果文本的长度大于某个给定值,我还需要更改此文本的字体大小。 UILabel可以自动缩小文本,但我不知道如何让它在每个符号周围绘制边框。 那么有没有办法自动收缩CGContextShowTextAtPoint()手动绘制的文本,或者至少测量用特定字体设置绘制的文本点的长度?

1 个答案:

答案 0 :(得分:4)

您可以使用核心图形绘制并设置最小字体大小以调整文本大小以适应:

[YOURSTRING drawAtPoint:CGPointMake(1, 1) forWidth:250 withFont:[UIFont fontWithName:@"Helvetica" size:14] minFontSize:10 actualFontSize:nil lineBreakMode:UILineBreakModeTailTruncation baselineAdjustment:UIBaselineAdjustmentNone];

您还可以使用以下方法获取文本字符串的大小:

CGSize expectedLabelSize = [YOURSTRING sizeWithFont:[UIFont fontWithName:@"Helvetica" size:14] constrainedToSize:CGSizeMake(MAXFLOAT, MAXFLOAT)];