2013-07-03 2 views
1

Если я создаю PDF-файл с использованием рамки core text, это не позволит мне установить цвет и стиль шрифта. Есть ли какие-либо проблемы с каркасом «основного текста»?Как установить цвет шрифта и стиль для PDF с использованием основного текста?

Я использую ниже код для настройки цвета:

CGContextRef currentContext = UIGraphicsGetCurrentContext(); 
CGContextSetRGBFillColor(currentContext, 1.0, 0.0, 0.0, 1.0); //This is not working. 

ответ

2

Try ниже кода, в этом коде я изменил свой стиль и размер шрифта с CTFontRef

+(void)drawText:(NSString*)textToDraw inFrame:(CGRect)frameRect 
{ 
    CFStringRef stringRef = (CFStringRef)textToDraw; 

    CGColorSpaceCreateWithName(stringRef); 

    NSMutableAttributedString *string = [[NSMutableAttributedString alloc] 
             initWithString:textToDraw]; 
    CTFontRef helveticaBold; 
    helveticaBold = CTFontCreateWithName(CFSTR("Helvetica-Bold"), 24.0, NULL); 
    [string addAttribute:(id)kCTFontAttributeName 
        value:(id)helveticaBold 
        range:NSMakeRange(0, [string length])]; 
    [string addAttribute:(id)kCTForegroundColorAttributeName 
        value:(id)[UIColor whiteColor].CGColor 
        range:NSMakeRange(0, [string length])]; 

    CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)string); 

    CGMutablePathRef framePath = CGPathCreateMutable(); 

    CGPathAddRect(framePath, NULL, frameRect); 
    CFRange currentRange = CFRangeMake(0, 0); 
    CTFrameRef frameRef = CTFramesetterCreateFrame(framesetter, currentRange, framePath, NULL); 
    CGPathRelease(framePath); 

    CGContextRef currentContext = UIGraphicsGetCurrentContext(); 

    CGContextSetTextMatrix(currentContext, CGAffineTransformIdentity); 

    CGContextTranslateCTM(currentContext, 0, frameRect.origin.y*2); 

    CGContextScaleCTM(currentContext, 1.0, -1.0); 

    CTFrameDraw(frameRef, currentContext); 

    CGContextScaleCTM(currentContext, 1.0, -1.0); 

    CGContextTranslateCTM(currentContext, 0, (-1)*frameRect.origin.y*2); 

    CFRelease(frameRef); 
    CFRelease(string); 
    CFRelease(framesetter); 
} 

Вы можете следить this Ссылка также Example

Надеюсь, это вам поможет, Happy Coding

0

Вы можете создать объект цвета, как это:

UIColor *colour = [UIColor colorWithRed:0 green:1 blue:0 alpha:0]; 

И цвет заливки:

CGContextSetFillColorWithColor(ctx, colour.CGColor); 

Если вы не используете ARC, вам нужно сохранить и освободить цвет соответственно.

Смежные вопросы