实现文字的整体变色与区域变色功能:CATextLayerTest

jopen 9年前

使用 CATextLayer,实现文字的整体变色(网易新闻顶部菜单)与区域变色(UC 浏览器阅读器顶部菜单)功能。
</div>

最近对网易新闻首页顶部标题栏与 UC 浏览器阅读器顶部标题栏的实现效果很好奇,于是尝试实现。字体变色比较好做,CATextLayer 本身就包含了 animated 的fontColor,区域变色就有些麻烦。以前读过王轲的《基于Core Animation的KTV歌词视图的平滑实现》,提供一种使用 mask 实现区域变色的思路,很棒,自己按着这个思路尝试使用的时候,发现两个 Label 的字体不能完全重合,总有毛边,一直找不到原因。后来自己想到的一个新的思路,不使用两个 Label,而是将文字作为 mask:先创建一个 CALayer 类型的 baseLayer,背景颜色为白色,再创建一个 CALayer 类型的 subLayer,背景颜色为绿色,subLayer 作为 baseLayer 的子 layer。然后创建 CATextLayer,写上字,将这个 textLayer 作为 baseLayer 的 mask,变化过程中改变 subLayer 的 frame 就可以了。

效果如下:

项目主页:http://www.open-open.com/lib/view/home/1440399469685