从文本中获取 CGPath
Posted
技术标签:
【中文标题】从文本中获取 CGPath【英文标题】:Get CGPath from Text 【发布时间】:2011-09-16 15:46:20 【问题描述】:Hej 研究员,
我目前正在尝试将一个字母和/或多个字母转换为 CGPathRef,以便手动将它们绘制到自定义 UIView 中。我尝试了 CoreText 和 Framesetters 的方法,包括这个小 sn-p,但它似乎不起作用....
NSAttributedString *stringToDraw = [[NSAttributedString alloc] initWithString:content
attributes:nil];
// now for the actual drawing
CGContextRef context = UIGraphicsGetCurrentContext();
// flip the coordinate system
// draw
CTFramesetterRef frameSetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)stringToDraw);
CTFrameRef frame = CTFramesetterCreateFrame(frameSetter, CFRangeMake(0, 0), NULL, NULL);
return CTFrameGetPath(frame);
【问题讨论】:
【参考方案1】:CTFrameGetPath
返回的是包围CTFrame
的路径,而不是绘制框架生成的路径。我假设您正在执行上述操作是因为您正在缓存路径以提高以后的绘图性能? (因为CTFrame
可以轻松地将自己绘制到自定义视图中)。
如果你真的想得到CGPath
,你需要一直钻到CGGlyph
,然后使用CTFontCreatePathForGlyph
。如果您只是想快速重绘文本,我可能会将其绘制成 CGLayer
(不是 CALayer
)和 CTFrameDraw
以供以后重用。
如果您仍然真的想要 CGPath
用于字形,请查看 Low-level text rendering。你需要的代码在里面。
【讨论】:
以上是关于从文本中获取 CGPath的主要内容,如果未能解决你的问题,请参考以下文章