首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Core Text实现编者的时候会用到的

2013-10-17 
Core Text实现编辑的时候会用到的首先说一下实现的原理,首先当手指开始触摸屏幕以及滑动的时候,效果与画矩

Core Text实现编辑的时候会用到的

首先说一下实现的原理,  首先当手指开始触摸屏幕  以及滑动的时候,  效果与画矩形框是一样的 因此  此时的代码也机会没有区别,

当手指松开后   在当前的矩形框处创建一个临时的textView ,并且背景变为灰色,textView    编辑结束, 在textView的  完成委托方法中    去掉灰色的背景  去掉临时的textView    在相同的位置上 利用coreText   显示出刚才编辑的内容

 

首先 手指触摸 会调用到

TextTool.m

123456789101112131415161718192021222324252627- (void)draw {  CGContextRef context = UIGraphicsGetCurrentContext();   NSMutableAttributedString *attrString = [[[NSMutableAttributedString alloc] initWithString:self.text] autorelease];  [attrString addAttribute:(NSString *)(kCTForegroundColorAttributeName) value:(id)self.strokeColor.CGColor range:NSMakeRange(0, [self.text length])];     CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attrString);     CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, [attrString length]), self.path.CGPath, NULL);  CFRelease(framesetter);  //CFRelease(attrString);  if(frame) {    CGContextSaveGState(context);         // Core Text wants to draw our text upside-down!  This flips it the    // right way.    CGContextTranslateCTM(context, 0, path.bounds.origin.y);    CGContextScaleCTM(context, 1, -1);    CGContextTranslateCTM(context, 0, -(path.bounds.origin.y + path.bounds.size.height));     CTFrameDraw(frame, context);     CGContextRestoreGState(context);     CFRelease(frame);  }}

 首先获得当前的上下文 

创建一个属性自字符串NSMutableAttributedString  并设置他的颜色以及其他属性

利用该属性字符串 创建一个CTFramesetterRef

再创建一个CTFrameRef

释放之前创建的CTFramesetterRef  对象framesetter

由于CoreText 是来自于Mac OS X的  它在绘图的时候 认为坐标轴是倒置的,所以在没ios中会产生倒置的效果,这里要转化以下才能正常显示

 

 

 

 

 

学习这一章 主要学习它的思路     怎么实现在一个view上   画出一个矩形框后 就是一个testView  并且编辑完成后  在相应的位置相识出编辑的内容  当然我们也可以利用 一些其他的图文混排的库  比如DTcoreText

热点排行