iphone – CGContextSelectFont等效 - 代码日志

iphone – CGContextSelectFont等效

在iOS7中,CGContextSelectFont已被弃用。弃用消息说我必须使用Core Text,但是我不知道这段代码的确切等同于:

CGContextSelectFont(context, "Helvetica", kBarLabelSize, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetRGBFillColor(context, 0, 0, 0, 1.0);
CGContextSetTextMatrix (context, CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0));
CGContextShowTextAtPoint(context, barX, barY, [@"Some text" cStringUsingEncoding:NSUTF8StringEncoding], [barValue length]);

我已经能够使用此代码创建字体:

CFMutableAttributedStringRef attrStr = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0);
CTFontRef font = CTFontCreateWithName(CFSTR("Helvetica"), kBarLabelSize, NULL);
CFAttributedStringSetAttribute(attrStr, CFRangeMake(0, CFAttributedStringGetLength(attrStr)), kCTFontAttributeName, font);

但是现在,我可以用这个字体将文本“绘制”到上下文中吗?

最好我可以从你的代码中理解,其确切的等同是:

CGContextSetTextDrawingMode(context, kCGTextFill); // This is the default
[[UIColor blackColor] setFill]; // This is the default
[@"Some text" drawAtPoint:CGPointMake(barX, barY)
           withAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica"
                                                                size:kBarLabelSize]
                            }];

请注意,您对CGContextSetTextDrawingMode和CGContextSetRGBFillColor的调用将值设置为默认值。当使用UIKit绘图时,不需要调用CGContextSetTextMatrix。

但是,我不知道[barValue长度]在哪里。我假设你只是不正确地使用这个长度@“一些文本”。 (长度不是你需要的字节数,你可能意思是[barValue lengthOfBytesUsingEncoding:NSUTF8StringEncoding])。

请注意,UIKit字符串绘图(见此处)包装核心文本。

http://stackoverflow.com/questions/18969784/cgcontextselectfont-equivalent

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:iphone – CGContextSelectFont等效