iOS开发之弧形文字
项目需要一个环形进度条,所以需要弧形的文字显示进度,网上找了一圈没有什么适合的,所以自己封装了一个简单的弧形文字。
基本属性参数如下
基本思路是 CTRunDraw()方法对每个glyph进行绘制 关于 CTRun CTLine Glyphs 的解释可以参照"https://www.jianshu.com/p/639f626c1661"
首先我们需要一个结构体来计算出每个glyph的绘制点和偏移角度:
创建上面结构体并赋值:
其中PrepareGlyphArcInfo()是赋值的函数,它通过遍历每个CTRun中的glyph,并用单个glyph的width对结构体GlyphArcInfo赋值,并通过每个glyph中心点距离和总行宽的比值计算angle进行赋值:
将绘制原点设置为我们需要的位置:
开发的时候可以画一个圆来方便理解:
开始绘制图形,设置绘制的起始点:
对context进行旋转至开始角度:
遍历glyph并作图:
由此画出来的图形是倒着的 所以需要翻转画布 (放在绘制之前)
调用:
效果图:

drawRect完整代码:
demo地址:"https://github.com/yollet/YOTool.git"
参考内容:"https://www.it610.com/article/1187879396397129728.htm"
苹果官方文档: "https://developer.apple.com/library/mac/samplecode/CoreTextArcCocoa/Introduction/Intro.html"