4

下面是我的代码崩溃

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(currentText);

我正在尝试设置字体,请帮助我谢谢。

+(void)drawText:(NSString*)textToDraw inFrame:(CGRect)frameRect
{

    //  CFStringRef stringRef = (__bridge CFStringRef)textToDraw;
    //  Prepare the text using a Core Text Framesetter

    NSAttributedString *stringRef=[[[NSAttributedString alloc]initWithString:textToDraw attributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:12.0],(NSString*)kCTFontAttributeName, nil]]autorelease];

    CFAttributedStringRef currentText =(__bridge CFAttributedStringRef)stringRef;
    CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(currentText);// at this Line it giving me EXC_BAD_ACCESS

    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(currentText);
    CFRelease(framesetter);
    //CFRelease(stringRef);
}
4

1 回答 1

7

尝试这个

CTFontRef font = CTFontCreateWithName((CFStringRef)@"Helvetica", 16.0f, nil);
CFAttributedStringSetAttribute(currentText,CFRangeMake(0, _stringLength-1),kCTFontAttributeName,font);
于 2012-09-25T07:13:47.310 回答