zoukankan      html  css  js  c++  java
  • 基于CoreText的基础排版引擎之不带图片的排版引擎

    - (void)drawRect:(CGRect)rect {
    
        [super drawRect:rect];
    
        //步骤一:得到当前绘制画布上下文,用于后续将内容绘制在画布上
    
        CGContextRef context = UIGraphicsGetCurrentContext();
    
        //步骤二:将坐标系上下翻转。对于底层的绘制引擎来说,屏幕左下角是(0,0)坐标。而对于上层的UIKit来说,左上角是(0,0)坐标。所以我们为了之后的坐标系描述按UIKit来显示,这里做了一个坐标系上下翻转操作。翻转之后,底层和上层的(0,0)坐标就是重合的了。
    
        CGContextSetTextMatrix(context, CGAffineTransformIdentity);
    
        CGContextTranslateCTM(context, 0, self.bounds.size.height);
    
        CGContextScaleCTM(context, 1.0, -1.0);
    
        
    
        //步骤三:创建绘制区域
    
        CGMutablePathRef path = CGPathCreateMutable();
    
        CGPathAddRect(path, NULL, self.bounds); 
    
    //    CGPathAddEllipseInRect(path, NULL, self.bounds);
    
        
    
        //步骤四
    
        NSAttributedString *attString = [[NSAttributedString alloc] initWithString:@"ScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhangScottZhang"];
    
        CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attString);
    
        CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, [attString length]), path, NULL);
    
        //步骤五
    
        CTFrameDraw(frame, context);
    
        //步骤六
    
        CFRelease(frame);
    
        CFRelease(path);
    
        CFRelease(framesetter);
    
    }
  • 相关阅读:
    初窥AndroidPlot(一)
    Android Studio安装、配置
    Android SDK Android NDK Android Studio 官方下载地址及方式
    学习Android图表绘制
    ActionBar研究(二)
    获取Android版本信息和程序版本号
    Android手机获取通话记录和短信记录
    Android开发之监听或获取手机短信内容【转】
    android 几种发送短信的方法【转】
    android开源框架android-async-http
  • 原文地址:https://www.cnblogs.com/zhanggui/p/4641579.html
Copyright © 2011-2022 走看看