gpt4 book ai didi

iphone - CGContextSelectFont 等效

转载 作者:太空狗 更新时间:2023-10-30 03:14:13 26 4
gpt4 key购买 nike

在 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]
}];

请注意,您对 CGContextSetTextDrawingModeCGContextSetRGBFillColor 的调用会将值设置为默认值。像这样使用 UIKit 绘图时,不需要调用 CGContextSetTextMatrix

不过,我不知道这里的 [barValue length] 是什么。我假设您只是错误地使用了 @"Some text" 的长度。 (length 不是您需要的字节数。您的意思可能是 [barValue lengthOfBytesUsingEncoding:NSUTF8StringEncoding])。

请注意,UIKit 字符串绘制(见此处)包裹了 Core Text。

关于iphone - CGContextSelectFont 等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18969784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com