1

我创建pdf文件。我需要绘制旋转文本。目前我有这个pdf文件

在此处输入图像描述

我绘制文本的代码

............

CGContextTranslateCTM(context, 0, frameRect.origin.y*2);
CGContextScaleCTM(context, 1.0, -1.0);
// Draw the frame.
CTFrameDraw(frame, context);


// Add these two lines to reverse the earlier transformation.
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0, (-1)*frameRect.origin.y*2);

我知道我必须使用CGContextRotateCTM(CGContextRef c, GFloat angle),但我不了解转换,我不能按照我的需要做。

4

1 回答 1

0

下面将旋转 -90 度的文本添加到页面顶部 yOffset 处的指定上下文:

+(void)addRotatedLabel:(CGContextRef)context atYOffset:(CGFloat)yOffset{

    // -90 degrees
    CGFloat rotation = -M_PI / 2.f;
    CGContextRotateCTM(context, rotation);

    NSString *label = [NSString stringWithFormat:@"%@", @"some text"];
    CGSize maxSize = CGSizeMake(300, 12);
    UIFont *font = [UIFont systemFontOfSize:7.5f];
    CGSize textSize = [label sizeWithFont:font constrainedToSize:maxSize lineBreakMode:NSLineBreakByClipping];
    CGRect titleRect = CGRectMake(-yOffset, 32.f - textSize.height + 3.f, textSize.width, textSize.height);

    [[UIColor blackColor] setFill];
    [label drawInRect:titleRect withFont:font];

    CGContextRotateCTM(context, -rotation);
}

它可以轻松修改以处理其他旋转、字体大小、传入NSString等。

于 2013-07-02T02:07:02.113 回答