欢迎光临散文网 会员登陆 & 注册

iOS开发之弧形文字

2022-02-25 16:33 作者:yollet  | 我要投稿

项目需要一个环形进度条,所以需要弧形的文字显示进度,网上找了一圈没有什么适合的,所以自己封装了一个简单的弧形文字。

基本属性参数如下

基本思路是 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"


iOS开发之弧形文字的评论 (共 条)

分享到微博请遵守国家法律