CATextLayer

作者: ALiG | 来源:发表于2016-05-09 17:13 被阅读3277次

在界面上添加文本有两种;一种是: UILabel;第二种是:CATextLayer;
最近在改到一个菜单的demo 里面大量的弄到了这个,感觉挺有趣的有自己写demo 的、或者想写demo的可以看看要不要用这个,CATextLayer会比UILabel渲染得快得多,所以会减少demo的占用资源率,方便嵌入项目,减少使用资源。
在一个图层里面显示文字,完全可以借助图层代理直接将字符串使用Core Graphics写入图层的内容(这就是UILabel的精髓)。如果越过寄宿于图层的视图,直接在图层上操作,那其实相当繁琐。你要为每一个显示文字的图层创建一个能像图层代理一样工作的类,还要逻辑上判断哪个图层需要显示哪个字符串,更别提还要记录不同的字体,颜色等一系列乱七八糟的东西。但是,Core Animation提供了一个CALayer的子类CATextLayer,它以图层的形式包含了UILabel几乎所有的绘制特性,并且额外提供了一些新的特性。
iOS 6及之前的版本,UILabel其实是通过WebKit来实现绘制的,这样就造成了当有很多文字的时候就会有极大的性能压力。而CATextLayer使用了Core text,并且渲染得非常快

- (void)viewDidLoad
{
CATextLayer *lary = [CATextLayer layer];
lary.string = @"dasfasa";
lary.bounds = CGRectMake(0, 0, 320, 20);
lary.font = @"HiraKakuProN-W3";//字体的名字 不是 UIFont
lary.fontSize = 12.f;//字体的大小
或者
//UIFont *font = [UIFont systemFontOfSize:14]; 
//    CFStringRef fontCFString = (__bridge CFStringRef)font.fontName;
 //       CGFontRef fontRef = CGFontCreateWithFontName(fontCFString);
 //       textLayer.font = fontRef;
 //       textLayer.fontSize = font.pointSize;
 //       CGFontRelease(fontRef); //与CFRelease的功能相当 当字体的null的时候不会引起程序出错

lary.wrapped = YES;//默认为No.  当Yes时,字符串自动适应layer的bounds大小
lary.alignmentMode = kCAAlignmentCenter;//字体的对齐方式
lary.position = CGPointMake(160, 410);//layer在view的位置 适用于跟随摸一个不固定长的的控件后面需要的
lary.contentsScale = [UIScreen mainScreen].scale;//解决文字模糊 以Retina方式来渲染,防止画出来的文本像素化
lary.foregroundColor =[UIColor redColor].CGColor;//字体的颜色 文本颜色
[self.view.layer addSublayer:lary];
}

推荐两个还不错的 我自己看了个大概 ,想细读的可以看楼下两个链接 看起来超级棒的。
https://zsisme.gitbooks.io/ios-/content/chapter1/layers-and-trees.html
http://www.cnblogs.com/daxiaxiaohao/p/4272722.html

相关文章

  • iOS[QuartzCore框架](CATextLayer)(6

    一、CATextLayer简介 CATextLayer可以通过字符串进行文字的绘制。 二、CATextLayer....

  • QuartzCore - CATextLayer

    CATextLayer 垂直居中显示,自定义 CATextLayer ,重写 draw(in ctx:) 方法

  • 2018-01-30

    CATextLayer 渲染速度 快鱼 UILabel所以以后争取用 CATextLayer 代替UILabel的...

  • CoreAnimation----CATextLayer

    CATextLayer 1. CATextLayer UILabel的精髓 在一个图层里面显示文字,可以借助图层代...

  • CATextLayer

    这两个CTFontRef,CGFontRef没用过,参考其他文章使用吧 Demo部分代码 接上一篇CAShapeL...

  • CATextLayer

    在界面上添加文本有两种;一种是: UILabel;第二种是:CATextLayer;最近在改到一个菜单的demo ...

  • CATextLayer

    在界面上添加文本有两种;一种是: UILabel;第二种是:CATextLayer;最近在改到一个菜单的demo ...

  • CATextLayer

    CATextLayer也要比UILabel渲染得快得多。 很少有人知道在iOS 6及之前的版本,UILabel其实...

  • CoreAnimation之CATextLayer

    CATextLayer是专用的文本显示图层,有和UILaber一样的显示功能,只是CATextLayer的文本渲染...

  • 第8章 专用图层

    8.2 CATextLayer UILabel的替代品: 这应该是一个用CATextLayer作为宿主图层的UIL...

网友评论

    本文标题:CATextLayer

    本文链接:https://www.haomeiwen.com/subject/xrderttx.html