返回自定义绘图文本方法的正确高度

时间:2012-02-23 04:54:40

标签: iphone quartz-2d

我有一些函数可用于绘制不同类型的文本。例如:

- (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分,我不确定为什么会出现这样的差异。谢谢!

1 个答案:

答案 0 :(得分:0)

为第一个循环中的y偏移量和第二个循环中的y偏移量创建单独的变量。然后返回MAX(yOffsetLeftCol, yOffsetRightCol)