Objective C - CAGradientLayer涵盖UILabel中的文本?

ary*_*axt 12 objective-c calayer uiview cagradientlayer

我试图为我添加一个渐变层,UILabel因为某些原因CAGradientLayer覆盖了我的文本.我做错了什么

- (void)viewDidLoad {
   [super viewDidLoad];

   CAGradientLayer *gradient = [CAGradientLayer layer];
   gradient.frame = CGRectMake(0, 0, myLabel.frame.size.width, myLabel.frame.size.height);
   gradient.colors = myColors;
   [myLabel.layer insertSublayer:gradient atIndex:0];
}
Run Code Online (Sandbox Code Playgroud)

Pey*_*loW 12

CAGradientLayer被覆盖你标签的文字,因为文字是由您明确添加子层覆盖的超层的内容绘制.

最简单的解决方案是使用两个视图.一UIView,你重写子类+[UIView layerClass],并返回[CAGradientLayer].添加一个好的init方法来设置渐变.

下一个小狗将其添加UILabel为自定义渐变视图的子视图.