Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS add bottom border to UILabel with shadow

May i know how do i add bottom border to UILable only with shadow? No top, left, right border.

this is not working. Here is the code I've tried but it's not working.

CALayer* layer = [titleLabel layer];
layer.frame = CGRectMake(-1, -1, titleLabel.frame.size.width, 1.0f);
layer.borderWidth=1;
[layer setBorderWidth:2.0f];
[layer setBorderColor:[UIColor blackColor].CGColor];
[layer setShadowOffset:CGSizeMake(-3.0, 3.0)];
[layer setShadowRadius:5.0];
[layer setShadowOpacity:5.0];
like image 866
user1302602 Avatar asked Sep 08 '12 07:09

user1302602


2 Answers

Test in this way:

UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 50)];

[lbl setText:@"Testo di prova..."];
[lbl setBackgroundColor:[UIColor clearColor]];
[[self view] addSubview:lbl];
[lbl sizeToFit];

CALayer* layer = [lbl layer];

CALayer *bottomBorder = [CALayer layer];
bottomBorder.borderColor = [UIColor darkGrayColor].CGColor;
bottomBorder.borderWidth = 1;
bottomBorder.frame = CGRectMake(-1, layer.frame.size.height-1, layer.frame.size.width, 1);
[bottomBorder setBorderColor:[UIColor blackColor].CGColor];
[layer addSublayer:bottomBorder];

I hope this helps you

like image 142
WhiteTiger Avatar answered Oct 05 '22 05:10

WhiteTiger


Just posting this answers for reference, since the user already got the answer, Try this code in Swift and let me know how it goes..

func buttomBorder(label: UILabel) -> UILabel {
    // For Buttom Border
    let frame = label.frame
    let bottomLayer = CALayer()
    bottomLayer.frame = CGRect(x: 0, y: frame.height - 1, width: frame.width - 2, height: 1)
    bottomLayer.backgroundColor = UIColor.lightGray.cgColor
    label.layer.addSublayer(bottomLayer)
    //For Shadow
    label.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.25).CGColor
    label.layer.shadowOffset = CGSizeMake(0.0, 2.0)
    label.layer.shadowOpacity = 1.0
    label.layer.shadowRadius = 0.0
    label.layer.masksToBounds = false
    label.layer.cornerRadius = 4.0

    return label

}

Function Call:

 labelName = buttomBoder(label: labelName)
like image 23
alpha47 Avatar answered Oct 05 '22 04:10

alpha47