возвращая правильную высоту пользовательского метода рисования текста - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть несколько функций, которые я использую для рисования другого типа текста.Например:

- (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.Поэтому меня интересует, возвращаю ли я правильную сумму в этом случае, а также, должен ли я использовать fontSize или [@"text" sizeWithFont:pFont].height в моем выражении возврата.В своем текущем состоянии, когда мне нужно нарисовать мой следующий блок текста в новой точке, он довольно смещен, примерно на 100 точек, и я не уверен, почему существует такое расхождение.Спасибо!

1 Ответ

0 голосов
/ 23 февраля 2012

Создайте отдельные переменные для смещения y в первом цикле и смещения y во втором цикле. Затем верните MAX(yOffsetLeftCol, yOffsetRightCol).

...