提出问题:
当对UILabel设置渐变color时,有点小问题。即:text为中文或中英混合字符串时显示正常,纯英文字符串不显示!!!
剖析问题:
经搜索了解到:在显示中文时,绘制渐变color的CAGradientLayer与显示字符串的layer层之间会有一个中间layer(好像是_UIContentLayer),使中文字符串不会被覆盖(正常显示);而显示纯英文字符串时,是没有这个中间layer的,导致CAGradientLayer覆盖了‘字符串layer’,就看不到字符串显示。
解决问题:
网上有说实现这种显示字符串+渐变color功能,可以用UIButton代替UILabel。经测试,的确可以显示出来纯英文字符串,但是这样也会有显示不出来的时候,比如:创建UIButton时,先设置了字体、标题,然后再设置渐变color(添加CAGradientLayer ),这样纯英文照样显示不出来。
最后解决方法是临时写了一个新类,给UIView上添加一个UILabel,前者显示渐变color,后者显示字符串;每次设置完渐变color,还要再重新把UILabel添加到UIView上。