由文字生成path后制作写字的动画

在看以下这个开源组件的时候,发现一个非常棒的方法,能够将文字生成path,这样就能够作出用笔写字的效果了。

https://github.com/MP0w/MPParallaxCollection

关键代码:

-(CGPathRef)pathRefFromText

{

NSAttributedString *attributed = self.attributedText;

CGMutablePathRef letters = CGPathCreateMutable();

CTLineRef line = CTLineCreateWithAttributedString((__bridge CFAttributedStringRef)attributed);

CFArrayRef runArray = CTLineGetGlyphRuns(line);

for (CFIndex runIndex = 0; runIndex < CFArrayGetCount(runArray); runIndex++)

{

CTRunRef run = (CTRunRef)CFArrayGetValueAtIndex(runArray, runIndex);

CTFontRef runFont = CFDictionaryGetValue(CTRunGetAttributes(run), kCTFontAttributeName);

for (CFIndex runGlyphIndex = 0; runGlyphIndex < CTRunGetGlyphCount(run); runGlyphIndex++)

{

CFRange thisGlyphRange = CFRangeMake(runGlyphIndex, 1);

CGGlyph glyph;

CGPoint position;

CTRunGetGlyphs(run, thisGlyphRange, &glyph);

CTRunGetPositions(run, thisGlyphRange, &position);

CGPathRef letter = CTFontCreatePathForGlyph(runFont, glyph, NULL);

CGAffineTransform t = CGAffineTransformMakeTranslation(position.x, position.y);

CGPathAddPath(letters, &t, letter);

CGPathRelease(letter);

}

}

UIBezierPath *path = [UIBezierPath bezierPathWithCGPath:letters];

CGRect boundingBox = CGPathGetBoundingBox(letters);

CGPathRelease(letters);

CFRelease(line);

[path applyTransform:CGAffineTransformMakeScale(1.0, -1.0)];

[path applyTransform:CGAffineTransformMakeTranslation(0.0, boundingBox.size.height)];

if (self.reversedAnimation) {

return [[path bezierPathByReversingPath] CGPath];

}

return [path CGPath];

}

时间: 2024-07-30 03:39:12

由文字生成path后制作写字的动画的相关文章

Python3+HTMLTestRunner+SMTP生成测试报告后发送邮件

在前一篇https://www.cnblogs.com/zhengyihan1216/p/11549820.html 中记录了如何生成html格式的报告, 这篇记录下怎么将测试报告通过邮件发出 1.对test_add_dele.py文件进行修改及完善 注释:email库定义邮件里的内容,smtplib库进行邮件发送 1 #coding=utf-8 2 from HTMLTestRunner import HTMLTestRunner 3 from email.mime.text import M

C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用XXX的问题

C# 中使用Image.FromFile(string path)后,提示该文件正在被另一进程使用XXX的问题,是因为对应的文件在一直调用 ,其生成的Image对象被Disponse()前都不会被解除锁定,这就造成了此问题,就是在这个图形被解锁前无法对图像进行操作(比如删除,修改等操作). 此问题可以使用下面三个方法解决问题. 方法1:在要进行文件操作前将Image对象销毁. System.Drawing.Image image = System.Drawing.Image.FromFile(f

JS动态生成表格后 合并单元格

JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单元格操作,在做之前也试着google下,但是网上没有碰到这方面的需求,所以自己写了一个简单的.用文字描述需求太费劲了,如下图所示: 1. 没有合并之前的图如下: 2. 合并之后的图如下: 如上所示:是根据相邻的编号相同 进行单元格合并. 先看看实现后的效果再聊吧! JSfiddle链接地址如下: 点

PPT特效文字:PPT如何制作特效文字

有得时候在幻灯片中我们可以看到很多稀奇古怪的字体,这些字体都有着自己独特的风格,非常吸引人的注意,那这些特效文字改如何去制作呢,小编给大家整理了一下教程,大家可以要认真看哦.步骤一:下载字体教程里用到的字体叫做:POLYA Regular,大家可以在百度中进行搜索下载.步骤二:在PPT里输入文字,例如:BIGGER.然后把字体选择为POLYA Regular.(如果安装好字体后,没有发现该字体,则需要重新启动一次Powerpoint.)步骤三:插入一个几何图形,我以矩形为例.注意,插入的几何图形

批量更改数据库表架构(生成sql后直接执行!)

批量更改数据库表架构(生成sql后直接执行!) use my_test; --当前数据库 declare @alltable varchar(1000), @SchemaOld varchar(1000), @SchemaNew varchar(1000), @NewSql VARCHAR(max), @Index INT; SET @SchemaOld='';--原架构名称 SET @SchemaNew='';--新架构名称 SET @NewSql=''; SET @Index=1; SELE

mui做的苹果app生成ipa后放到自己的网站上让人下载安装

苹果的APP不通过app store的话就只能是要那个$299的企业签名证书了.这个我还不会搞,没有搞过!!! 别人已经帮忙签名好的ipa,自己再传到自己的服务器上让人下载安装,步骤如下: Hbuider IDE中用MUI开发APP,测试成功后直接用菜单里的生成开发包,苹果那里勾选越狱包,生成,等一会就会有ipa(xxx.ipa)包生成好了 把生成的IPA包发给BOSS好友(他有那个$299的苹果企业账号),他生成签名后的IPA包(xxx-resigned.ipa)给我,怎么生成的其实我并不知道

使用path制作各类型动画路径

原文:使用path制作各类型动画路径 <Window x:Class="使用path制作各类型动画路径.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height=&

WPF编程,通过Path类型制作沿路径运动的动画一种方法。

原文:WPF编程,通过Path类型制作沿路径运动的动画一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87339456 From/To/By 类型动画的输入是From.To和By参数: KeyFrame类型动画的输入是关键帧: 而Path类型的动画输入则是PathGeometry,这是其最大特点. ?Path类型的动画是一种可以沿指定路径运动的动画, 使用DoubleAnimationU

WPF编程,通过Path类型制作沿路径运动的动画另一种方法。

原文:WPF编程,通过Path类型制作沿路径运动的动画另一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87358989 上一篇文章给了一个这方面的例子,那个文章里是通过后台按钮事件进行动画的开始.停止.继续等. 这里给出的是通过前台XAML来实现. 1.前台 定义路径.定义运动的主体,这里是一圆. <Path Stroke="Black" StrokeThickness