我希望我的文本周围有白色边框。我使用 CATextLayer 作为文本。我知道 CATextLayer 没有属性 borderColor/borderWidth。当然,我可以使用其超类(CALayer)的属性,但随后它会在图层框架周围绘制边框,而不是在文本本身周围绘制边框。有谁知道我如何使用 CATextLayer 实现这一点?
以防万一有人对我的解决方案感兴趣:
基本上可以在不直接使用 CoreText 的情况下制作带有笔划(边框)的文本。 CATextLayer 的字符串属性接受 NSAttributedStrings。因此,就像在其属性中给出一个带有描边颜色和描边宽度的 NSAttributedString 一样简单。
不幸的是我需要对字体大小进行动画处理。 string 属性是可动画的,但前提是它是 NSString。所以我决定对 CATextLayer 进行子类化。经过多次尝试,我意识到 CATextLayer 的字符串和内容属性是互斥的,这意味着要么显示字符串,要么显示内容。我自己不知道如何绘制字符串。仅当更新内容时才会调用 display 和 drawInContext:ctx 方法,但我不知道更新字符串时需要调用什么。
所以我决定编写自己的 CATextLayer 类,子类化 CALayer。我创建了一个名为 fontSize 的可动画属性。当这个动画被激活时,drawInContext:ctx 方法被调用。在 drawInContext:ctx 方法中,我使用 CoreText 创建一个新字符串,并使用 fontSize 属性相应地更新其大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)