博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CoreAnimation 之CATextLayer
阅读量:6091 次
发布时间:2019-06-20

本文共 1363 字,大约阅读时间需要 4 分钟。

  如果你想在一个图层中显示文字,完全可以借助图层代理直接将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 -3 - 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一样包含点大小。

 

转载于:https://www.cnblogs.com/ToBeTheOne/p/5750963.html

你可能感兴趣的文章
SVN merge 三种方式
查看>>
SoapUI接口测试·第一个HTTP Request接口请求和断言
查看>>
Swift3.0语言教程替换子字符串
查看>>
用js将从后台得到的时间戳(毫秒数)转换为想要的日期格式
查看>>
Sass 的使用
查看>>
免费给自己的网站加 HTTPS
查看>>
jQuery获取CSS样式中的颜色值的问题
查看>>
每天5分钟玩转容器技术(1)
查看>>
深度学习笔记之一些基本术语
查看>>
Highmaps网页图表教程之图表配置项结构与商业授权
查看>>
微信公众平台SDK for node
查看>>
Andrew Ng机器学习笔记+Weka相关算法实现(四)SVM和原始对偶问题
查看>>
使用Kotlin开发Android应用
查看>>
汽车行业品牌榜(2016年)--搜索指数
查看>>
Linux: su sudo sudoer
查看>>
错误:OSError: [Errno 1] Operation not permitted: 'lib/python/six-1.4.1-py2.7.egg-info'
查看>>
Jenkins构建脚本中启动tomcat关键
查看>>
Mac命令行启动MySQL
查看>>
MySql(七):MySQL性能调优——锁定机制与锁优化分析
查看>>
MySQL性能优化的最佳21条经验
查看>>