zoukankan      html  css  js  c++  java
  • CoreText 简单 使用

     1 - (void)drawRect:(CGRect)rect
     2 {
     3     NSString *longText = @"CoreText"; /* ... */
     4     NSRange rang =[self.hightString rangeOfString:longText];
     5     longText = @"CoreText";
     6      NSMutableAttributedString *string = [[NSMutableAttributedString alloc]
     7                                          initWithString:longText];
     8 
     9     
    10     if (rang.location == NSNotFound)
    11     {
    12        
    13     }
    14     
    15        
    16     // make a few words bold
    17     CTFontRef helvetica = CTFontCreateWithName(CFSTR("Helvetica"), 14.0, NULL);
    18     CTFontRef helveticaBold = CTFontCreateWithName(CFSTR("Helvetica-Bold"), 14.0, NULL);
    19     
    20     [string addAttribute:(id)kCTFontAttributeName
    21                    value:(__bridge id)helvetica
    22                    range:NSMakeRange(0, [string length])];
    23     
    24     
    25     [string addAttribute:(id)kCTForegroundColorAttributeName
    26                    value:(id)[UIColor redColor].CGColor
    27                    range:NSMakeRange(3, 5)];
    28     
    29     // layout master
    30     CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(
    31                                                                            (CFAttributedStringRef)string);
    32     
    33     // left column form
    34     CGMutablePathRef leftColumnPath = CGPathCreateMutable();
    35     CGPathAddRect(leftColumnPath, NULL,
    36                   CGRectMake(0, 0,
    37                              self.bounds.size.width/2.0,
    38                              self.bounds.size.height));
    39     
    40     // left column frame
    41     CTFrameRef leftFrame = CTFramesetterCreateFrame(framesetter,
    42                                                     CFRangeMake(0, 0),
    43                                                     leftColumnPath, NULL);
    44     
    45     // right column form
    46     CGMutablePathRef rightColumnPath = CGPathCreateMutable();
    47     CGPathAddRect(rightColumnPath, NULL,
    48                   CGRectMake(self.bounds.size.width/2.0, 0,
    49                              self.bounds.size.width/2.0,
    50                              self.bounds.size.height));
    51     
    52     NSInteger rightColumStart = CTFrameGetVisibleStringRange(leftFrame).length;
    53     
    54     // right column frame
    55     CTFrameRef rightFrame = CTFramesetterCreateFrame(framesetter,
    56                                                      CFRangeMake(rightColumStart, 0),
    57                                                      rightColumnPath,
    58                                                      NULL);
    59     
    60     // flip the coordinate system
    61     CGContextRef context = UIGraphicsGetCurrentContext();
    62     CGContextSetTextMatrix(context, CGAffineTransformIdentity);
    63     CGContextTranslateCTM(context, 0, self.bounds.size.height);
    64     CGContextScaleCTM(context, 1.0, -1.0);
    65     
    66     // draw
    67     CTFrameDraw(leftFrame, context);
    68     CTFrameDraw(rightFrame, context);
    69     
    70     // cleanup
    71     CFRelease(leftFrame);
    72     CGPathRelease(leftColumnPath);
    73     CFRelease(rightFrame);
    74     CGPathRelease(rightColumnPath);
    75     CFRelease(framesetter);
    76     CFRelease(helvetica);
    77     CFRelease(helveticaBold);
    78    // [string release];
    79     
    80 }
    CoreText
  • 相关阅读:
    APB协议
    AHB总线协议(一)
    C++内存机制中内存溢出、内存泄露、内存越界和栈溢出的区别和联系
    深入理解C++内存管理机制
    c/c++内存机制(一)(转)
    与临时对象的斗争(下)
    与临时对象的斗争(上)ZZ
    C++异常处理解析: 异常的引发(throw), 捕获(try catch)、异常安全
    qt5信息提示框QMessageBox用法
    红黑树
  • 原文地址:https://www.cnblogs.com/fgyqbs/p/4374313.html
Copyright © 2011-2022 走看看