zoukankan      html  css  js  c++  java
  • CoreText的使用方法

    - (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中会产生倒置的效果,这里要转化以下才能正常显示

    参考:http://www.cnblogs.com/bucengyongyou/archive/2012/09/14/2685797.html

  • 相关阅读:
    堆排序算法的原理和实现
    图的深度优先搜索(DFS)和广度优先搜索(BFS)算法
    图的迪杰斯特拉算法求最短路径
    第13章 切换到混合流并添加API访问
    第12章 添加对外部认证的支持
    第11章 使用OpenID Connect添加用户身份验证
    第10章 使用密码保护API
    第9章 使用客户端凭据保护API
    第8章 概述
    第7章 贡献
  • 原文地址:https://www.cnblogs.com/endtel/p/4847468.html
Copyright © 2011-2022 走看看