Adding a CGGradient as sublayer to UILabel hides the text of label

前端 未结 5 1123
青春惊慌失措
青春惊慌失措 2020-12-03 17:17

I want to add the gradient as a background to label. I used the following code to acheive that. but the problem is that though the gradient color appears on the label, but t

5条回答
  •  孤城傲影
    2020-12-03 17:35

    The suggested answer with the UILabel inside a UIView works. Apparently UILabels cannot have text within them after giving the background a gradient color background... don't know why....

    But heres the full code for the solution.... hope this helps someone :)

    UIView *EnvironmentalsLabelView = [[UIView alloc] initWithFrame:CGRectMake(0, 300, 320, 20)];
    CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.frame = EnvironmentalsLabelView.bounds;
    gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor darkGrayColor]CGColor], (id)[[UIColor blackColor]CGColor], nil];
    [EnvironmentalsLabelView.layer insertSublayer:gradient atIndex:0];
    [scroller addSubview:EnvironmentalsLabelView];
    
    UILabel *EnviornmentalsLabelText = [[UILabel alloc] initWithFrame:EnvironmentalsLabelView.bounds];
    [EnviornmentalsLabelText setFont:[UIFont fontWithName:@"Arial-BoldMT" size:12.0f]];
    EnviornmentalsLabelText.textAlignment = NSTextAlignmentCenter;
    EnviornmentalsLabelText.backgroundColor = [UIColor clearColor];
    EnviornmentalsLabelText.text = @"Environmental Benefits";
    [EnvironmentalsLabelView addSubview:EnviornmentalsLabelText];
    

    Happy coding!!!!

提交回复
热议问题