我有一些函数可用于绘制不同类型的文本。例如:
- (CGFloat)drawInformation:(CGContextRef)c withLeftCol:(NSArray *)leftCol rightcol:(NSArray *)rightCol atPoint:(CGPoint)point withLineSpacing:(CGFloat)lineSpacing {
CGContextSetStrokeColorWithColor(c, [UIColor blackColor].CGColor);
CGFloat fontSize = 16.0;
UIFont *pFont = [UIFont fontWithName:@"Arial-BoldMT" size:fontSize];
CGFloat yOffset = 0;
for (NSString *leftColStr in leftCol) {
[leftColStr drawAtPoint:CGPointMake(point.x, point.y + yOffset) withFont:pFont];
yOffset += lineSpacing;
}
yOffset = 0;
for (NSString *rightColStr in rightCol) {
[rightColStr drawAtPoint:CGPointMake(rtStart, point.y + yOffset) withFont:pFont];
yOffset += lineSpacing;
}
return [leftCol count] > [rightCol count] ? [leftCol count] * (fontSize + lineSpacing) : [rightCol count] * (fontSize + lineSpacing);
}
我没有包括整个方法,但这是它的要点。我基本上接受了一个文本数组,并将它们绘制成两列。我想返回该区域的高度,所以我知道它有多大,可以绘制下面的下一段文字。
我找到的一件事是即使我设置了fontSize = 16
,如果我做了[@"text" sizeWithFont:pFont]
,我实际上得到了18或者其他东西。如您所见,我还添加了一些lineSpacing
。所以我想知道的是,如果我在这种情况下返回正确的数量,而且,如果我应该在我的return语句中使用fontSize或[@"text" sizeWithFont:pFont].height
。在目前的状态下,当我需要在新的点上绘制我的下一个文本块时,它是相当偏离的,如100分,我不确定为什么会出现这样的差异。谢谢!
答案 0 :(得分:0)
为第一个循环中的y偏移量和第二个循环中的y偏移量创建单独的变量。然后返回MAX(yOffsetLeftCol, yOffsetRightCol)
。