UILabel에서 하위 클래스를 만들고 drawRect 메서드를 재정의 할 수 있습니다.
- (void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(ctx, 207.0f/255.0f, 91.0f/255.0f, 44.0f/255.0f, 1.0f);
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 :
iOS 6부터 Apple은 UILabel에 대한 NSAttributedString 지원을 추가 했으므로 이제 훨씬 더 쉽고 여러 줄에서 작동합니다.
NSDictionary *underlineAttribute = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)};
myLabel.attributedText = [[NSAttributedString alloc] initWithString:@"Test string"
attributes:underlineAttribute];
여전히 iOS 4 및 iOS 5를 지원하려면 레이블에 수동으로 밑줄을 긋는 대신 TTTAttributedLabel 을 사용하는 것이 좋습니다 . 그러나 한 줄 UILabel에 밑줄을 긋고 타사 구성 요소를 사용하지 않으려는 경우 위의 코드가 여전히 트릭을 수행합니다.