1

我正在使用 CGContextShowTextAtPoint() 手动绘制文本,因为该文本被放置在图像上并且是可读的. 图像不是静态的,所以我不能使用任何静态图像代替文本。所以我需要绘制真实的文本对象。但是,如果例如文本长度大于某个给定值,我还需要更改此文本的字体大小。UILabel 有自动缩小文本的选项,但我不知道如何让它在每个符号周围绘制边框。那么有没有办法自动收缩由 CGContextShowTextAtPoint() 手动绘制的文本,或者至少测量文本点的长度,使用特定的字体设置绘制?

4

1 回答 1

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)];
于 2012-04-18T12:12:07.070 回答