博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 界面上绘制不同字体 颜色 大小的字符串
阅读量:5793 次
发布时间:2019-06-18

本文共 3434 字,大约阅读时间需要 11 分钟。

hot3.png

分四步

//1.创建一个可变的属性字符串  方便修改属性

 NSMutableAttributedString *mabstring = [[NSMutableAttributedString alloc]initWithString:string];    //1.1设置属性字符串属性    //1.1.1设置字体属性    CTFontRef font = CTFontCreateWithName((CFStringRef)@"Arial", fontInt, NULL);//    1.1.2设置字体颜⾊色    [mabstring addAttribute:(id)kCTForegroundColorAttributeName value:(id)     color.CGColor range:range];    //1.1.3设置属性字符串 范围字体大小    [mabstring addAttribute:(id)kCTFontAttributeName value:(__bridge id)font range:NSMakeRange(0, string.length)];

//2.创建绘图路径

//2.1  Create用完之后要对应一个Release
//根据属性字符串得到绘图路径

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)mabstring);    //2.2创建可变的绘图路径    CGMutablePathRef path = CGPathCreateMutable();    //2.3绘制矩形路径    CGPathAddRect(path, NULL ,CGRectMake(10 , 0 ,self.bounds.size.width-20 , self.bounds.size.height));    //CFRangeMake(0, 0)這是一個很重要的指令,通常我們看到CFRangeMake的第二個參數是正整數,如果為0的話,系統還是會跑到最後一個字。    //2.4 根据字符串和绘制路径得到绘图frame    CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);

//3.获取当前(View)上下⽂(画笔/画布) 以便于之后的绘画。

 CGContextRef context = UIGraphicsGetCurrentContext();        /*     以上就是我们绘制的文本,但是这个文本绘制在界面上是反的coreText使用Y翻转坐标系统,内容呈现也是上下翻转     */    //3.1翻转坐标系  难点    CGContextSetTextMatrix(context,CGAffineTransformIdentity);    //x,y轴⽅方向移动    CGContextTranslateCTM(context , 0 ,self.bounds.size.height);    //缩放x,y轴⽅方向缩放,-1.0为反向1.0倍,坐标系转换,沿y轴翻转180度    CGContextScaleCTM(context, 1.0 ,-1.0);        /*     注:     CoreText使用的是反Y轴坐标系。因此文本内容被渲染成倒立的     仅仅是在当前视图的上下文中应用了一个转换(上下颠倒坐标系)。在每次绘制Core Text的时候复制粘贴下面三行这段代码。     CGContextSetTextMatrix(context,CGAffineTransformIdentity);     //x,y轴⽅方向移动     CGContextTranslateCTM(context , 0 ,self.bounds.size.height);     //缩放x,y轴⽅方向缩放,-1.0为反向1.0倍,坐标系转换,沿y轴翻转180度     CGContextScaleCTM(context, 1.0 ,-1.0);     */

//4.CTFrameDraw在指定上下文中绘制指定的文本绘制块。

CTFrameDraw(frame,context);

mrc下  要对应出现release

    CFRelease(frame);
    CGPathRelease(path);
    CFRelease(framesetter);

下面列出一些属性属性

 CTFontRef font = CTFontCreateWithName(CFSTR("Georgia"), 40, NULL); [mabstring addAttribute:(id)kCTFontAttributeName value:(__bridge id)font range:NSMakeRange(0, 4)];/* //设置字体简隔 eg:test long number = 10; CFNumberRef num = CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt8Type,&number); [mabstring addAttribute:(id)kCTKernAttributeName value:(__bridge id)num range:NSMakeRange(10, 4)]; *//* //设置字体颜色 [mabstring addAttribute:(id)kCTForegroundColorAttributeName value:(id)[UIColor redColor].CGColor range:NSMakeRange(0, 9)]; *//* //设置空心字 long number = 2; CFNumberRef num = CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt8Type,&number); [mabstring addAttribute:(id)kCTStrokeWidthAttributeName value:(__bridge id)num range:NSMakeRange(0, [str length])];  //设置空心字颜色 [mabstring addAttribute:   (id)kCTStrokeColorAttributeName value:(id)[UIColor greenColor].CGColor range:NSMakeRange(0, [str length])]; *//* //设置斜体字 CTFontRef font = CTFontCreateWithName((CFStringRef)[UIFont italicSystemFontOfSize:20].fontName, 14, NULL); [mabstring addAttribute:(id)kCTFontAttributeName value:(__bridge id)font range:NSMakeRange(0, 4)]; *//*  //下划线 [mabstring addAttribute:(id)kCTUnderlineStyleAttributeName value:(id)[NSNumber numberWithInt:kCTUnderlineStyleDouble] range:NSMakeRange(0, 4)]; //下划线颜色 [mabstring addAttribute:(id)kCTUnderlineColorAttributeName value:(id)[UIColor redColor].CGColor range:NSMakeRange(0, 4)]; */

转载于:https://my.oschina.net/bieshixuan/blog/617441

你可能感兴趣的文章
轻松学MVC4.0–1 建立MVC项目
查看>>
sql查找不重复数据 去重
查看>>
xStream完美转换XML、JSON
查看>>
HDF
查看>>
不错的句子
查看>>
【数据立方cube】数据立方
查看>>
Ubuntu Linux 中启动FTP服务
查看>>
PHPCMS V9 视频分享模块SQL注射漏洞分析
查看>>
4、单机运行环境搭建之 --CentOS-6.5优化Tomcat7
查看>>
操作系统概论——引
查看>>
SAP顾问如何在GLOBAL 项目中快速提升自己?
查看>>
第四章 库与运行库
查看>>
ORACLE 索引和MYSQL INNODB 辅助索引对NULL的处理区别
查看>>
解读ASP.NET 5 & MVC6系列(16):自定义View视图文件查找逻辑
查看>>
如何搭建DNS服务(转)
查看>>
TensorFlow -- 模型保存与读取
查看>>
优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
查看>>
Web---HTTP请求、重定向、转发和数据压缩
查看>>
WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿
查看>>
13.1.17 CREATE TABLE Syntax
查看>>