NSString *title =[NSString stringWithFormat:@"%@",@"绘制文字"];
NSDictionary *titDic = @{NSForegroundColorAttributeName:[UIColor redColor],
NSFontAttributeName:[UIFont systemFontOfSize:14.0]
};
//富文本样式
NSMutableAttributedString *attributeTitle = [[NSMutableAttributedString alloc] initWithString:title attributes:titDic];
//设置frame
CTFramesetterRef titFrameSetterRef = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attributeTitle);
//获取绘制高度
CGFloat viewW = self.view.bounds.size.width;
CGSize reSize = CGSizeMake(viewW, 10000); //预估的绘制范围,但是 hight=10000 必须是具体的数值,系统可以形成一个具体的矩形块,否则高度会不准
//绘制的尺寸
CGSize titSize = CTFramesetterSuggestFrameSizeWithConstraints(titFrameSetterRef, CFRangeMake(0, 0), NULL, reSize, NULL);
CGRect titRect = CGRectMake(0, 0, viewW, titSize.height);
//绘制路径
CGPathRef titPathRef = CGPathCreateWithRect(titRect, NULL);
CTFrameRef frameRef = CTFramesetterCreateFrame(titFrameSetterRef, CFRangeMake(0, 0), titPathRef, NULL);
//获取画布
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetTextMatrix(contextRef, CGAffineTransformIdentity);
//坐标系转换 绘制的时候 CT是以左上角为原点(0,0) Y轴向下 设备显示Y轴向上所以要改变坐标系
//平移坐标系 x轴平移0 y轴平移titSize.height
CGContextTranslateCTM(contextRef, 0, titSize.height);
//缩放坐标轴 x轴方向缩放1.0 y轴缩放-1.0 即x坐标乘1.0 y坐标乘-1.0 坐标轴是反转的
CGContextScaleCTM(contextRef, 1.0, -1.0);
//绘制文字
CTFrameDraw(frameRef, contextRef);
//释放创建的对象
CFRelease(titFrameSetterRef);
CGPathRelease(titPathRef);
CFRelease(frameRef);
//还有旋转坐标系
- void CGContextRotateCTM ( CGContextRef c, CGFloat angle ):旋转坐标系统。
该方法控制坐标系统旋转 angle 弧度。在缩放后的坐标系统上绘制图形时,所有坐标点的 X、Y 坐标都相当于旋转了 angle弧度之后的坐标。
为了让开发者在进行坐标变换时无须计算多次坐标变换后的累加结果,Quartz 2D还提供了如下两个方法来保存、恢复绘图状态。
- void CGContextSaveGState ( CGContextRef c ):保存当前的绘图状态。
- void CGContextRestoreGState ( CGContextRef c ):恢复之前保存的绘图状态。
需要说明的是,CGContextSaveGState() 函数保存的绘图状态,不仅包括当前坐标系统的状态,也包括当前设置的填充风格、线条风格、阴影风格等各种绘图状态。但 CGContextSaveGState() 函数不会保存当前绘制的图形。
这些基本够平时使用的
富文本绘制 之Quartz 2D
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- ⚠️ rotate 是以原点为中心旋转,Quartz 2D 创建的图形上下文旋转中心为左下角,角度值正数为逆时针旋...
- 很多童鞋知道CoreGraphics,但不见得听过Quartz 2D,二者关系见上一篇(等等,其实就是土豆和马铃薯...