UILabel добавить градиентный слой [дубликат]


На этот вопрос уже есть ответ здесь:

Чтобы добавить градиент фона к UILabel, я использую следующий код.

Перед использованием градиента UILabel выглядит следующим образом.

Без Градиента

Теперь, чтобы добавить градиент, я использую следующее код.

   CAGradientLayer *gradLayer=[CAGradientLayer layer];
    gradLayer.frame=self.myView.layer.bounds;
    [gradLayer setColors:[NSArray arrayWithObjects:(id)([UIColor redColor].CGColor), (id)([UIColor cyanColor].CGColor),nil]];
    gradLayer.endPoint=CGPointMake(1.0, 0.0);

    [self.myView.layer addSublayer:gradLayer];

UILabel тогда выглядит следующим образом, но без текста.

с градиентами

Я также пытаюсь добавить слой в нижней части слоя UILabel, но безуспешно.

[self.myView.layer insertSublayer:gradLayer atIndex:0];
1 2

1 ответ:

Вам, вероятно, придется вместо этого установить метку поверх другого UIView:

 UIView *labelBackground = [[UIView alloc] initWithFrame:self.label.frame];
 self.label.backgroundColor = [UIColor clearColor];
 self.label.frame = self.label.bounds;

 CAGradientLayer *gradLayer=[CAGradientLayer layer];
 gradLayer.frame = labelBackground.layer.bounds;
 [gradLayer setColors:[NSArray arrayWithObjects:(id)([UIColor redColor].CGColor), (id)([UIColor cyanColor].CGColor),nil]];
 gradLayer.endPoint=CGPointMake(1.0, 0.0);

 [labelBackground.layer addSublayer:gradLayer];

 [labelBackground addSubview:self.label];

 [self.view addSubview:labelBackground];