coreText所處地位
textKit是iOS7加入的
coreText的基本原理
iOS/OSX中用于描述富文本的類是NSAttributedString。NSAttributedString 的 attributes 可以配置字符串中任意區(qū)域的篮奄,字體顏色割去,下劃線,斜體呻逆,背景顏色。
CoreText 中最重要的兩個概念就是 CTFrameSetter 和 CTFrame憔足。
用 NSAttributedString 生成 CTFrameSetter
CTFrameSetter 是 CTFrame 的工廠酒繁,專門用來生產(chǎn) CTFrame(用 CTFrameSetter 來 生產(chǎn) CTFrame )
用 CTFrame 繪制到 context 上。
(CTLine 和 CTRun 是由屬性文本自動處理的揭绑,要進行精細化配置的時候才需要自己處理 CTRun)
大概步驟
coreText所處地位
textKit是iOS7加入的
coreText的基本原理
iOS/OSX中用于描述富文本的類是NSAttributedString他匪。NSAttributedString 的 attributes 可以配置字符串中任意區(qū)域的夸研,字體顏色,下劃線悼沈,斜體,背景顏色絮供。
CoreText 中最重要的兩個概念就是 CTFrameSetter 和 CTFrame。
用 NSAttributedString 生成 CTFrameSetter
CTFrameSetter 是 CTFrame 的工廠缚俏,專門用來生產(chǎn) CTFrame(用 CTFrameSetter 來 生產(chǎn) CTFrame )
用 CTFrame 繪制到 context 上贮乳。
(CTLine 和 CTRun 是由屬性文本自動處理的,要進行精細化>配置的時候才需要自己處理 CTRun)
![coreText的基本原理2_2.png](http://upload-images.jianshu.io/upload_images/935738-8456995eb2c54c5b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
[來自唐巧 ](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