`
linwwwei
  • 浏览: 223577 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用core text输出文本

 
阅读更多
在ios中,进行文本样式设计目前有2种方式: UIWebView ,core text
下面我将通过一个例子来讲述一下如何使用coretext来进行文本样式的添加。
本文章参考:
http://web.archiveorange.com/archive/v/nagQXJDPDGVNz9LFLmSK
http://www.cocoanetics.com/2011/01/befriending-core-text/
首先,进行创建一个UIView的子类,并实现如下代码:
- (void)drawRect:(CGRect)rect {
// Drawing code.
//创建要输出的字符串
NSString *longText = @”袁唯来来”;
//创建AttributeString
NSMutableAttributedString *string = [[NSMutableAttributedStringalloc]
initWithString:longText];
//创建字体以及字体大小
CTFontRef helvetica = CTFontCreateWithName(CFSTR(”Helvetica”),14.0, NULL);
CTFontRef helveticaBold =CTFontCreateWithName(CFSTR(”Helvetica-Bold”), 14.0, NULL);
//添加字体 目标字符串从下标0开始到字符串结尾
[string addAttribute:(id)kCTFontAttributeName
value:(id)helvetica
range:NSMakeRange(0, [string length])];
//添加字体 目标字符串从下标0开始,截止到4个单位的长度
[string addAttribute:(id)kCTFontAttributeName
value:(id)helveticaBold
range:NSMakeRange(0, 4)];
//添加字体 目标字符串从下标6开始,截止到5个单位长度
[string addAttribute:(id)kCTFontAttributeName
value:(id)helveticaBold
range:NSMakeRange(6, 5)];
//添加字体 目标字符串从下标109开始,截止到9个单位长度
[string addAttribute:(id)kCTFontAttributeName
value:(id)helveticaBold
range:NSMakeRange(109, 9)];
//添加字体 目标字符串从下标223开始,截止到6个单位长度
[string addAttribute:(id)kCTFontAttributeName
value:(id)helveticaBold
range:NSMakeRange(223, 6)];
//添加颜色,目标字符串从下标0开始,截止到4个单位长度
[string addAttribute:(id)kCTForegroundColorAttributeName
value:(id)[UIColor blueColor].CGColor
range:NSMakeRange(0, 4)];
//添加过程同上
[string addAttribute:(id)kCTForegroundColorAttributeName
value:(id)[UIColor redColor].CGColor
range:NSMakeRange(18, 3)];
[string addAttribute:(id)kCTForegroundColorAttributeName
value:(id)[UIColor greenColor].CGColor
range:NSMakeRange(657, 6)];
[string addAttribute:(id)kCTForegroundColorAttributeName
value:(id)[UIColor blueColor].CGColor
range:NSMakeRange(153, 6)];
//创建文本对齐方式
CTTextAlignment alignment = kCTLeftTextAlignment;//左对齐kCTRightTextAlignment为右对齐
CTParagraphStyleSetting alignmentStyle;
alignmentStyle.spec=kCTParagraphStyleSpecifierAlignment;//指定为对齐属性
alignmentStyle.valueSize=sizeof(alignment);
alignmentStyle.value=&alignment;
//创建文本行间距
CGFloat lineSpace=5.0f;//间距数据
CTParagraphStyleSetting lineSpaceStyle;
lineSpaceStyle.spec=kCTParagraphStyleSpecifierLineSpacing;//指定为行间距属性
lineSpaceStyle.valueSize=sizeof(lineSpace);
lineSpaceStyle.value=&lineSpace;
//创建样式数组
CTParagraphStyleSetting settings[]={
alignmentStyle,lineSpaceStyle
};
//设置样式
CTParagraphStyleRef paragraphStyle =CTParagraphStyleCreate(settings, sizeof(settings));
//给字符串添加样式attribute
[string addAttribute:(id)kCTParagraphStyleAttributeName
value:(id)paragraphStyle
range:NSMakeRange(0, [string length])];
// layout master
CTFramesetterRef framesetter =CTFramesetterCreateWithAttributedString(
(CFAttributedStringRef)string);
CGMutablePathRef leftColumnPath = CGPathCreateMutable();
CGPathAddRect(leftColumnPath, NULL,
CGRectMake(0, 0,
self.bounds.size.width,
self.bounds.size.height));
CTFrameRef leftFrame =CTFramesetterCreateFrame(framesetter,
CFRangeMake(0, 0),
leftColumnPath, NULL);
// flip the coordinate system
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
// draw
CTFrameDraw(leftFrame, context);
// cleanup
CGPathRelease(leftColumnPath);
CFRelease(framesetter);
CFRelease(helvetica);
CFRelease(helveticaBold);
[string release];
UIGraphicsPushContext(context);
}
分享到:
评论

相关推荐

    Text2Wav文字转语音C#版

    TTS技术,全称Text-to-Speech,是将文本信息转化为可听见的语音输出的一种技术。它广泛应用于各种场景,如无障碍阅读、智能助手、有声读物制作等。Text2Wav主要功能是将用户输入的文字转化为高质量的WAV音频文件,...

    C#将文本数据转换成语音进行播报实例

    在IT行业中,文本转语音(Text-to-Speech, TTS)技术是一种常用的功能,它能够将文字信息转化为可听的语音输出,为用户提供便捷的信息获取方式。本项目以"C#将文本数据转换成语音进行播报实例"为主题,适用于.NET ...

    设置Win Form窗体标题栏的文本

    确保你的项目设置正确,包括输出类型(应该是Windows应用)、目标框架(可能需要.NET Framework或.NET Core,取决于你的需求)以及任何依赖库的引用。 总的来说,设置Win Form窗体标题栏的文本是Windows应用程序...

    C#使用iTextSharp将PDF转成文本的方法

    2. `StreamWriter` 和 `FileStream`:这两个类用于处理输出文本文件。`StreamWriter`用于写入文本到文件,而`FileStream`则用于创建或打开一个文件。在这里,我们使用`new FileStream(dest, FileMode.Create)`创建一...

    使用python进行文本预处理和提取特征的实例1.zip

    `TfidfVectorizer`的输出就是词袋模型的一种形式,它使用TF-IDF权重来量化每个词的重要性。 在"使用python进行文本预处理和提取特征的实例.pdf"文件中,可能会详细介绍这些步骤的代码实现和背后的理论。通过实践...

    文本文件与EXCEL文件比对筛选

    在C#中,我们可以利用.NET Framework或.NET Core中的`System.IO`命名空间来处理文本文件,以及使用`Microsoft.Office.Interop.Excel`库(需安装Office软件)来操作Excel文件。以下是实现这个任务的关键步骤: 1. **...

    textlayout_framework_overview

    1. **Text Layout Core Component**: - 提供基础的文本布局引擎,负责核心的文本处理和布局逻辑。 - 包括对文本流的管理和布局算法的实现。 2. **Text Layout Conversion Component**: - 负责将内部数据模型...

    文本挖掘 词性标注(python)

    文本挖掘是信息技术领域的一个重要分支,它涉及到对大量文本数据的深入分析,以提取有用的信息和知识。在Python中,我们可以利用各种库和工具来实现这一目标,其中词性标注是文本预处理的关键步骤之一。词性标注是将...

    freemarker itext core-renderer

    这个库可能与iText一起使用,提供额外的渲染功能,比如将RTF(Rich Text Format)数据转换为高质量的PDF输出。 结合这些库,开发者可以构建一个系统,使用FreeMarker来处理模板,然后通过iText和Core-Renderer将...

    C# 语音朗读

    C# 是一种广泛使用的编程语言,尤其在Windows应用程序开发中,它提供了丰富的库和工具来实现各种功能,包括文本到语音(TTS,Text-to-Speech)的转换。这个名为“C# 语音朗读”的项目显然旨在利用C# 的能力,让程序...

    python-分享篇-英文短文自动分词写入文本文件

    为了将这些分词结果写入文本文件,我们可以使用Python的内置`open()`函数,以写入模式`'w'`打开文件,然后用`write()`方法逐行写入: ```python with open('output.txt', 'w') as f: for token in tokens: f....

    java将文本内容转为二维码

    3. **ZXing库使用**:ZXing是广泛使用的库,它的`core`模块提供了二维码生成的核心功能,而`javase`模块则包含了一个简单的命令行工具和示例代码。首先,需要将ZXing库添加到项目依赖中,然后可以创建`BitMatrix`...

    C#在Text中输入文字转化成语音的整套程序

    在IT领域,文本转语音(Text-to-Speech, TTS)技术是一种常见的功能,它允许计算机程序将文本数据转化为人类可听的音频输出。在C#编程语言中,实现这样的功能可以通过利用.NET Framework或者.NET Core提供的API来...

    C#文本朗读样例,精简封装,非常简单易用

    在C#中,我们可以利用Windows API或第三方库(如SAPI5或System.Speech)来实现文本转语音(TTS,Text-to-Speech)。`VoiceHelper`可能封装了这些库,提供了简洁的调用接口,比如`Speak`方法,用于将传入的字符串转化...

    iOS 文字动画(每个字逐个显示)

    在实际项目中,这两种方法都可以通过结合Core Animation和Core Text来实现更复杂的效果,如渐显、淡入淡出等。同时,为了提高性能和用户体验,应当注意优化动画的执行,避免一次性加载大量文字导致的卡顿。 在提供...

    喊话器(C#)

    在C#中实现这样的喊话器,开发者可能使用了.NET Framework或者.NET Core作为开发环境,以及内置的System.Speech库。System.Speech库提供了SpeechSynthesizer类,通过这个类,开发者可以方便地将文本转换为语音输出。...

    aspose操作pdf实例代码:.netcore

    本文将详细讲解如何使用Aspose库在.NET Core中进行PDF操作,并结合给定的文件名(Program.cs、ConsoleApp11.csproj、ConsoleApp11.sln)来构建一个简单的示例代码。 首先,`Program.cs`是C#程序的主要入口点,它...

    java使用IText导出PDF(包含图片、表格、文字等等Demo和依赖包)

    下面将详细介绍如何使用IText库来实现这个功能,包括添加图片、创建表格以及插入文本。 首先,你需要在项目中引入IText的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...

Global site tag (gtag.js) - Google Analytics