CoreAnimation 之CATextLayer
如果你想在一个图层中显示文字,完全可以借助图层代理直接将Core Graphics写入图层的内容(这就是UILabel的精髓)。如果雨果寄宿于图层的视图,直接在图层上操作,其实相当繁琐。你要为每一个显示文字的图层创建一个能像图层代理一样工作的类,还要在逻辑上判断哪个图层需要显示哪个字符串,更别提还要记录不同的字体,颜色等等的属性。
万幸的是这是都是多余的,在CoreAnimation为我们提供了一个CALayer的子类CATextLayer,它以图层的形式包含了UILabel几乎所有的绘制特效,并且额外提供了一些新的特性。同样,在性能上,CATextLayer也比UILabel渲染快的多。在IOS6之前的版本,UILabel其实是通过WebKit来实现绘制的,这样就引起了大量文字时的性能压力。CATextLayer使用了CoreText,渲染的非常快。
以下是一段使用CATextLayer显示文字的简单代码:
CATextLayer *textLayer = [CATextLayer layer];
textLayer.frame = CGRectMake((i * arr.count + j)*_columnWidth + i*_typeSpace+_originSize.x + _typeSpace, CGRectGetHeight(self.frame) - height - _originSize.y - - size.width, _columnWidth, size.height);
textLayer.string = str;
textLayer.fontSize = 9.0;
textLayer.alignmentMode = kCAAlignmentCenter;
textLayer.foregroundColor = itemsView.backgroundColor.CGColor;
然而,不要忘记了一个特殊的属性——contentScale,用来决定图层内容应该以怎样的分辨率来渲染。contentScale并不关心屏幕的拉伸因素,拉伸比例默认为1.0.如果我们以Retina屏显示文字时,会造成文本像素化。我们需要手动设置CATextLayer的contentScale属性,如下:
textLayer.contentsScale = [UIScreen mainScreen].scale;
CATextLayer的font属性不是一个UIFont类型,而是一个CFTypeRef类型。这样可以根据你的具体需要来决定使用CGFontRef还是CTFontRef类型。同样字体大小也是用fontSize属性单独设置,因为CTFontRef和CGFontRef并不像UIFont一样包含点大小。
CoreAnimation 之CATextLayer的更多相关文章
- iOS开发CoreAnimation解读之三——几种常用Layer的使用解析
iOS开发CoreAnimation解读之三——几种常用Layer的使用解析 一.CAEmitterLayer 二.CAGradientLayer 三.CAReplicatorLayer 四.CASh ...
- iOS开发CoreAnimation解读之二——对CALayer的分析
iOS开发CoreAnimation解读之二——对CALayer的分析 一.UIView中的CALayer属性 1.Layer专门负责view的视图渲染 2.自定义view默认layer属性的类 二. ...
- iOS CoreAnimation详解(一) 有关Layer的动画
以前由于项目需要 也写了一些动画 ,但是知识不系统,很散.这段时间趁着项目完成的空袭,来跟着大神的脚步系统的总结一下iOS中Core Animation的知识点. 原博客地址:http://blog. ...
- 二、CoreAnimation之寄宿图详解
在之前的图层树中我们知道,可以使用CALayer对象创建一些有背景颜色的图层,其实使用CALayer,不仅可以利用其展示背景颜色,还可以展示图片.而这些展示内容,其实就是CALayer的寄宿图.这一节 ...
- 一、CoreAnimation之图层树详解
CoreAnimation :在字面意思为“核心动画”,但是如果您认为它仅仅是一个动画框架,那可能就要错过一些经典功能了.动画,只是CoreAnimation功能的一小部分,毕竟人家的源头是一个叫做L ...
- iOS CoreAnimation 核心动画
一 介绍 一组非常强大的动画处理API 直接作用在CALAyer上,并非UIView(UIView动画) CoreAnimation是所有动画的父类,但是不能直接使用,应该使用其子类 属性: dura ...
- ios基础篇(二十五)—— Animation动画(UIView、CoreAnimation)
Animation主要分为两类: 1.UIView属性动画 2.CoreAnimation动画 一.UIView属性动画 UIKit直接将动画集成到UIView类中,实现简单动画的创建过程.UIVie ...
- iOS关于CoreAnimation动画知识总结
一:UIKit动画 在介绍CoreAnimation动画前先简单介绍一下UIKit动画,大部分简单的动画都可以使用UIKit动画实现,如果想实现更复杂的效果,则需要使用Core Animation了: ...
- CoreAnimation方法汇总
使用CoreAnimation一般分为三个部分:1.创建执行动画的CALayer 2.创建动画 3.CALayer 添加Animation CoreAnimation是以锚点为基础. CoreAnim ...
随机推荐
- 备忘:spring jdbc事务代码 mybatis, nhibernate
http://files.cnblogs.com/files/mikelij/mymavenMar1.rar
- RapidJSON 代码剖析(三):Unicode 的编码与解码
根据 RFC-7159: 8.1 Character Encoding JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32. The defa ...
- java中hashcode()和equals()的详解
今天下午研究了半天hashcode()和equals()方法,终于有了一点点的明白,写下来与大家分享(zhaoxudong 2008.10.23晚21.36). 1. 首先equals()和hashc ...
- Log4j 简单应用
#输出日志的包路径log4j.logger.com=DEBUG,FILE log4j.rootLogger=WARN,stdout #控制台日志 log4j.appender.stdout=org.a ...
- java-工具类-读取配置文件
java读取配置文件,当发现文件被修改后则重新加载 package com.zg.config; import java.io.File; import java.io.FileInputStream ...
- Neural Style学习2——环境安装
neural-style Installation This guide will walk you through the setup for neural-style on Ubuntu. Ste ...
- 重写保存按钮save事件
_saveActionEventHandler:function(event,value){ if (!_self.fireEvent("saveBefore")) return; ...
- <<< Jquery查找元素、选择器使用方法总结
$("#myDiv"); //根据给定的ID匹配一个元素,用于搜索id 属性中给定的值,id属性必须是唯一的 $("div"); //根据给定的元素名匹配所有元 ...
- iOS获取设备唯一标识的8种方法
8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...
- Linux下php安装Redis扩展
说明: 操作系统:CentOS php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php7/etc/php.ini Nginx安装目录:/usr/loca ...