Uilabel with rounded corners, shadow and background image

I try to find every method I found, but I could not do it. I just want to make a label with rounded corners, a shadow with a background pattern. Shadow only works if I don't want rounded corners. I can’t get both of them together!

Here is my code with shadow:

label.text = msg; label.textAlignment = UITextAlignmentCenter; label.frame = CGRectMake(20,10,280,40); label.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"msg_box_bg.png"]]; [label.layer setCornerRadius:10]; [label.layer setMasksToBounds:NO]; /* Shadow */ label.layer.shadowColor = [UIColor blackColor].CGColor; label.layer.shadowOpacity = 0.6; label.layer.shadowOffset = CGSizeMake(0,0); label.layer.shadowRadius = 3; 

It gives me a shadow with no rounded corners. But if I use

 [label.layer setMasksToBounds:YES]; 

This will give me rounded corners without a shadow. I advised using a shadow path, so the code with the shadow path looks like this:

 label.text = msg; label.textAlignment = UITextAlignmentCenter; label.frame = CGRectMake(20,10,280,40); label.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"msg_box_bg.png"]]; [label.layer setCornerRadius:10]; [label.layer setMasksToBounds:YES]; /* Shadow */ label.layer.shadowColor = [UIColor blackColor].CGColor; label.layer.shadowOpacity = 0.6; label.layer.shadowOffset = CGSizeMake(0,0); label.layer.shadowRadius = 3; label.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:label.frame cornerRadius:10]CGPath]; label.layer.shouldRasterize = YES; 

This code gives me rounded corners, but no shadow. Any suggestions?

Thanks!

+8
ios uilabel calayer shadow
source share
1 answer

enter image description here

I used the code below to get the results you were after.

 CGSize size = CGSizeMake(280, 40); /** Shadow */ CALayer *shadowLayer = [CALayer new]; shadowLayer.frame = CGRectMake(20,100,size.width,size.height); shadowLayer.cornerRadius = 10; shadowLayer.backgroundColor = [UIColor clearColor].CGColor; shadowLayer.shadowColor = [UIColor blackColor].CGColor; shadowLayer.shadowOpacity = 0.6; shadowLayer.shadowOffset = CGSizeMake(0,0); shadowLayer.shadowRadius = 3; /** Label */ UILabel *label = [UILabel new]; label.text = @"Hello World"; label.textAlignment = UITextAlignmentCenter; label.frame = CGRectMake(0, 0, size.width, size.height); label.backgroundColor = [UIColor clearColor]; label.layer.cornerRadius = 10; [label.layer setMasksToBounds:YES]; // customLabel.backgroundColor = [UIColor whiteColor]; label.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"options.png"]]; /** Add the Label to the shawdow layer */ [shadowLayer addSublayer:label.layer]; [self.view.layer addSublayer:shadowLayer]; [shadowLayer release]; 
+11
source share

All Articles