随手记:

对于iOS文字动画,首先想到的应该是基于CoreText框架将文字每个都写出来,加上定时器给定每个字显示的时间,这是一种思维方式:

#import "ViewController.h"
#import <CoreText/CoreText.h>
@interface ViewController ()
{NSMutableArray *labels;NSMutableArray *numArr;NSMutableArray *dataArr;
}
@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];}- (IBAction)buttonClick:(id)sender {UIView *vi = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];vi.backgroundColor = [UIColor whiteColor];[self.view addSubview:vi];CATextLayer *textLayer = [CATextLayer layer];textLayer.frame = vi.bounds;textLayer.contentsScale = [UIScreen mainScreen].scale;[vi.layer addSublayer:textLayer];textLayer.alignmentMode = kCAAlignmentJustified;textLayer.wrapped = YES;UIFont *font = [UIFont fontWithName:@"EuphemiaUCAS-Bold" size:12];NSArray *familyNames = [UIFont familyNames];for( NSString *familyName in familyNames ){printf( "Family: %s \n", [familyName UTF8String] );NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];for( NSString *fontName in fontNames ){printf( "\tFont: %s \n", [fontName UTF8String] );}}NSString *str = @"还是月西江更有意境:日暮江水远,入夜随风迁,秋叶乱水月...";NSMutableAttributedString *string = nil;string = [[NSMutableAttributedString alloc] initWithString:str];CFStringRef fontName = (__bridge CFStringRef)(font.fontName);CGFloat fontSize = font.pointSize;CTFontRef fontRef = CTFontCreateWithName(fontName, fontSize, NULL);NSDictionary *attribs = @{(__bridge id)kCTForegroundColorAttributeName:(__bridge id)[UIColor whiteColor].CGColor,(__bridge id)kCTFontAttributeName:(__bridge id)fontRef};[string setAttributes:attribs range:NSMakeRange(0, str.length)];dataArr = [NSMutableArray arrayWithObjects:(__bridge id _Nonnull)(fontRef),attribs,string,str,textLayer, nil];numArr = [NSMutableArray array];for (int i = 0; i < str.length; i++) {[numArr addObject:[NSNumber numberWithInt:i]];[self performSelector:@selector(changeToBlack) withObject:nil afterDelay:0.1 * i];}CFRelease(fontRef);}- (void)changeToBlack {CTFontRef fontRef = (__bridge CTFontRef)(dataArr[0]);NSMutableAttributedString *string = dataArr[2];NSNumber *num = [numArr firstObject];int y = [num intValue];NSDictionary *attribs = dataArr[1];attribs = @{(__bridge id)kCTForegroundColorAttributeName:(__bridge id)[UIColor blackColor].CGColor,(__bridge id)kCTFontAttributeName:(__bridge id)fontRef};[string setAttributes:attribs range:NSMakeRange(y, 1)];if (numArr.count > 1) {[numArr removeObjectAtIndex:0];}CATextLayer *textLayer = [dataArr lastObject];textLayer.string = string;
}

是不是还有另一种思维方式呢,答案是有的,只需在label上加一个白色的挡板就OK了,当然,别忘记了把挡板的anchorPoint变为(1,0.5),让它从左边开始变小:

#import "ViewController.h"@interface ViewController ()
{UIView *myView;BOOL isclick;
}
@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];label.text = @"我其实很喜欢你的,初音";[self.view addSubview:label];myView = [[UIView alloc] initWithFrame:CGRectMake(200, 100, 200, 50)];myView.backgroundColor = [UIColor whiteColor];myView.layer.anchorPoint = CGPointMake(1, 0.5);[self.view addSubview:myView];
}
- (IBAction)buttonClick:(id)sender {if (!isclick) {[UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionLayoutSubviews animations:^{myView.bounds = CGRectMake(0, 0, 10, 50);} completion:^(BOOL finished) {}];} else {[UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionLayoutSubviews animations:^{myView.bounds = CGRectMake(0, 0, 200, 50);} completion:^(BOOL finished) {}];}isclick = !isclick;
}

demo下载地址:http://download.csdn.net/download/et295394330/9406943

iOS 文字动画,文字逐个显示相关推荐

  1. html5 css3舞台灯光,HTML5特效库 CSS3 实现灯光照射显示文字动画源码

    效果图 各位朋友,大家好! 今天给大家带来的特效源码是 CSS3 实现灯光照射显示文字动画源码 是不是很炫酷,大家可以按照自己的想法进行修改! 有想要文件版源码的可以私聊我 废话不多说,上源码! CS ...

  2. html图片上的灯光,CSS3 实现灯光照射显示文字动画

    CSS3实现灯光照射显示文字动画 5iweb.com.cn Css部分: body {background: #000;} .content {position: relative;width: 75 ...

  3. IOS label设置多行显示并且文字在最上方显示

    var customLabel = new UILabel (new RectangleF(10,10,300,30)); customLabel.Text ="Display this t ...

  4. ae制h5文字动画_大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画

    前段时间听部门老大说,Airbnb出了个移动端的动画库Lottie,可以和一个名叫Bodymovin的AE插件结合起来,把在AE上做好的动画导出为json文件,然后以Android/iOS原生动画的形 ...

  5. 这文字的起始位置_ae制作文字动画?ae文字动画教程

    ae文字动画技巧教程: 第1步 创建一个新的合成,转到文件并选择一个新的合成 第2步 选择[T]文本工具 第3步 输入您的文字. 第4步 根据您的需要更改文本的颜色. 第5步 借助选择工具[V]调整文 ...

  6. yzmcms图片自适应代码_基于segment.js制作的非常有创意的分段式SVG文字动画特效...

    [温馨提示]源码包解压密码:www.youhutong.com 效果图: 描述说明: 要使用该SVG文字动画特效,要在页面中引入segment.js,它用于动画SVG路径,d3-ease,用于制作ea ...

  7. 爱了爱了,这样的文字动画让你爱不释手

    前言 偶然逛国外博客,看到了一个介绍文字动画的库,进入 pub 一看,立马就爱上这个动画库了,几乎你能想到的文字动画效果它都有!现在正式给大家安利一下这个库:animated_text_kit.本篇我 ...

  8. html简单的文字自动出现效果,8个华丽的HTML5文字动画特效赏析

    文字是网页的灵魂,很早以前有人发明了很多漂亮的计算机字体,这让网页变得样式各异.HTML5和CSS3的出现,我们可以让文字变得更加富有个性,在一些需要的场合,我们甚至可以利用HTML5制作文字动画.本 ...

  9. ae制h5文字动画_对于8个华丽的HTML5文字动画特效图文赏析

    文字是网页的灵魂,很早以前有人发明了很多漂亮的计算机字体,这让网页变得样式各异.HTML5和CSS3的出现,我们可以让文字变得更加富有个性,在一些需要的场合,我们甚至可以利用HTML5制作文字动画.本 ...

最新文章

  1. Oracle中查看表空间的使用率的脚本
  2. linux命令行模式连接网络,centos命令行模式连接无线网络的过程
  3. linux跟踪线程的方法:LWP和strace命令
  4. 可变参数中size_t遇见的问题
  5. linux之彻底卸载mysql
  6. Codeforces Round #656 (Div. 3) C. Make It Good
  7. java语言程序设计复习重点_java语言程序设计期末复习要点
  8. 【Redis】client客户端 工具 redis-cli
  9. python定时任务启动与停止_Python启动定时任务
  10. Dash中文文档: Python2.7.16 和 Python3.8
  11. 微信小程序毕业设计 基于微信小程序评选投票系统开题报告
  12. linux服务器发异常包,如何排查Linux服务器上的恶意发包行为
  13. 用友NC V6.5 6.33 6.31 6.3 6.1 2019新个人所得税增强包税改升级补丁包
  14. Matlab filter2、conv2报错:不支持N维数组
  15. ubuntu 20.04 安装百度网盘
  16. Kaldi中 声纹识别的流程图
  17. 人身险信息库大数据开闸 消费者可货比三家
  18. Stepper Motor > 步进电机控制相关参数缩写
  19. 如何投资股票型基金?什么时间买?买什么?
  20. 【 bzoj 4355 】 Play with sequence - 线段树乱搞

热门文章

  1. 4种免费将图片转成PDF的方法,手机电脑都能用
  2. 获取json中数组的length
  3. 倍福PLC基于NT_Shutdown实现控制器自动关机重启
  4. Mangopi MQ-R:T113-s3编译Tina Linux系统(二)SDK目录
  5. vue仿淘宝放大镜插件 vue-piczoom的使用问题
  6. 某App逆向分析,破解提交参数
  7. Map中的keySet方法
  8. 力扣 LCP 42. 玩具套圈 (数学公式反推)
  9. numpy 轴与维度的理解
  10. 亚洲上海linux_亚洲企鹅中学Linux俱乐部启发社区