一些奇怪的事情正在发生。我正在使用 NSAttributedString 进行一些格式化,包括倾斜和倾斜。NSOBliquenessAttributeName 成功了。但后来我想扩展到 CoreText 以控制实际呈现文本的框架。甚至在弄清楚这一切之前,我注意到我的 NSObliquenessAttributeName 没有被呈现。我所有的其他属性仍然被渲染,所以我有点困惑。
- (void)drawSlanted
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
[[UIColor blackColor] setFill];
NSAttributedString *text = [[NSAttributedString alloc] initWithString:@"This isn't slanted... but is stroked" attributes:@{NSObliquenessAttributeName: @10.0,
NSStrokeWidthAttributeName: @2.0}];
// Flip Coordinates
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0.0, CGRectGetHeight(self.bounds));
CGContextScaleCTM(context, 1.0, -1.0);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)text);
CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, text.length), [UIBezierPath bezierPathWithRect:self.bounds].CGPath, NULL);
CTFrameDraw(frame, context);
CFRelease(frame);
CGContextRestoreGState(context);
}