Underline text in UIlabel Underline text in UIlabel ios ios

Underline text in UIlabel


You may subclass from UILabel and override drawRect method:

- (void)drawRect:(CGRect)rect {    CGContextRef ctx = UIGraphicsGetCurrentContext();    CGContextSetRGBStrokeColor(ctx, 207.0f/255.0f, 91.0f/255.0f, 44.0f/255.0f, 1.0f); // RGBA    CGContextSetLineWidth(ctx, 1.0f);    CGContextMoveToPoint(ctx, 0, self.bounds.size.height - 1);    CGContextAddLineToPoint(ctx, self.bounds.size.width, self.bounds.size.height - 1);    CGContextStrokePath(ctx);    [super drawRect:rect];  }

UPD:
As of iOS 6 Apple added NSAttributedString support for UILabel, so now it's much easier and works for multiple lines:

NSDictionary *underlineAttribute = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)};myLabel.attributedText = [[NSAttributedString alloc] initWithString:@"Test string"                                                          attributes:underlineAttribute];

If you still wish to support iOS 4 and iOS 5, I'd recommend to use TTTAttributedLabel rather than underline label manually. However if you need to underline one-line UILabel and don't want to use third-party components, code above would still do the trick.


In Swift:

let underlineAttriString = NSAttributedString(string: "attriString",                                          attributes: [NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue])label.attributedText = underlineAttriString


This is what i did. It works like butter.

1) Add CoreText.framework to your Frameworks.

2) import <CoreText/CoreText.h> in the class where you need underlined label.

3) Write the following code.

    NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:@"My Messages"];    [attString addAttribute:(NSString*)kCTUnderlineStyleAttributeName              value:[NSNumber numberWithInt:kCTUnderlineStyleSingle]              range:(NSRange){0,[attString length]}];    self.myMsgLBL.attributedText = attString;    self.myMsgLBL.textColor = [UIColor whiteColor];