coreText所處地位
textKit是iOS7加入的
coreText的基本原理
iOS/OSX中用于描述富文本的類是NSAttributedString。NSAttributedString 的 attributes 可以配置字符串中任意區(qū)域的,字體顏色,下劃線,斜體,背景顏色。
CoreText 中最重要的兩個(gè)概念就是 CTFrameSetter 和 CTFrame。
用 NSAttributedString 生成 CTFrameSetter
CTFrameSetter 是 CTFrame 的工廠,專門用來生產(chǎn) CTFrame(用 CTFrameSetter 來 生產(chǎn) CTFrame )
用 CTFrame 繪制到 context 上。
(CTLine 和 CTRun 是由屬性文本自動(dòng)處理的,要進(jìn)行精細(xì)化配置的時(shí)候才需要自己處理 CTRun)
大概步驟
coreText所處地位
textKit是iOS7加入的
coreText的基本原理
iOS/OSX中用于描述富文本的類是NSAttributedString。NSAttributedString 的 attributes 可以配置字符串中任意區(qū)域的,字體顏色,下劃線,斜體,背景顏色。
CoreText 中最重要的兩個(gè)概念就是 CTFrameSetter 和 CTFrame。
用 NSAttributedString 生成 CTFrameSetter
CTFrameSetter 是 CTFrame 的工廠,專門用來生產(chǎn) CTFrame(用 CTFrameSetter 來 生產(chǎn) CTFrame )
用 CTFrame 繪制到 context 上。
(CTLine 和 CTRun 是由屬性文本自動(dòng)處理的,要進(jìn)行精細(xì)化>配置的時(shí)候才需要自己處理 CTRun)

[來自唐巧 ](http://blog.devtang.com/2015/06/27/using-coretext-1/)
import "CTDisplayView.h"
import "CoreText/CoreText.h"
@implementation CTDisplayView
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
// 步驟 1
CGContextRef context = UIGraphicsGetCurrentContext();
// 步驟 2
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
// 步驟 3
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, self.bounds);
// 步驟 4
NSAttributedString *attString = [[NSAttributedString alloc] initWithString:@"Hello World!"];
CTFramesetterRef framesetter =
CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attString);
CTFrameRef frame =
CTFramesetterCreateFrame(framesetter,
CFRangeMake(0, [attString length]), path, NULL);
// 步驟 5
CTFrameDraw(frame, context);
// 步驟 6
CFRelease(frame);
CFRelease(path);
CFRelease(framesetter);
}
@end