Search code examples
iosuilabelcalayer

Glossy Label Look in iOS


I am looking at how to make a label appear to have a rounded glossy look, similar to this: enter image description here

I know I can use the CALayer in the app for different things like borders, and rounded corners, but I'm unsure about a glossy look. Right now I am using:

CALayer* l = [myCounterLabel layer];
    CALayer* m = [myhiddenlabel layer];
    [l setMasksToBounds:YES];
    [l setCornerRadius:11];
    [l setBorderWidth:2.0];
    [l setBorderColor:[[UIColor blackColor] CGColor]];

This gives me a label that looks like this (I know font and everything else doesn't match...right now just looking for a glossy look: enter image description here


Solution

  • There's a few ways you could do this but a CAGradientLayer is likely your best bet. Assume you have CAGradientLayer* property:

        self.gradient = [CAGradientLayer layer];
        self.gradient.frame = CGRectMake(100, 100, 100, 100);
        self.gradient.cornerRadius = 11;
        self.gradient.borderWidth = 2.0;
    // Set the colors you want in the gradient
        self.gradient.colors = @[(id)[UIColor grayColor].CGColor, (id)[UIColor grayColor].CGColor, (id)[UIColor blackColor].CGColor, (id)[UIColor blackColor].CGColor];
    // if you want to control as to the distribution of the gradient you can set the control points for the gradient here (make sure you have as many as you have colors)
        self.gradient.locations = @[@0.0f, @0.5f, @0.5f, @1.0f];