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];
それでもiOS4とiOS5をサポートしたい場合は、ラベルに手動で下線を引くのではなく、TTTAttributedLabelを使用することをお勧めします。ただし、1行のUILabelに下線を引く必要があり、サードパーティコンポーネントを使用したくない場合でも、上記のコードでうまくいきます。