轉(zhuǎn)自:http://blog.csdn.net/chaoyuan899/article/details/38306141
方法一:
[objc]?view plain?copy
NSMutableAttributedString?*str?=?[[NSMutableAttributedString?alloc]?initWithString:@"查看所有中獎(jiǎng)記錄"];??
NSRange?strRange?=?{0,[str?length]};??
[str?addAttribute:NSUnderlineStyleAttributeName?value:[NSNumber?numberWithInteger:NSUnderlineStyleSingle]?range:strRange];??
[_awardDisplayBtn?setAttributedTitle:str?forState:UIControlStateNormal];??
方法二:
HyperlinksButton.h
[objc]?view plain?copy
#import???
@interface?HyperlinksButton?:?UIButton??
{??
UIColor?*lineColor;??
}??
-(void)setColor:(UIColor*)color;??
@end??
HyperlinksButton.m?
[objc]?view plain?copy
#import?"HyperlinksButton.h"??
@implementation?HyperlinksButton??
-?(id)initWithFrame:(CGRect)frame??
{??
self?=?[super?initWithFrame:frame];??
if?(self)?{??
????}??
return?self;??
}??
-(void)setColor:(UIColor?*)color{??
lineColor?=?[color?copy];??
[self?setNeedsDisplay];??
}??
-?(void)?drawRect:(CGRect)rect?{??
CGRect?textRect?=self.titleLabel.frame;??
????CGContextRef?contextRef?=?UIGraphicsGetCurrentContext();??
CGFloat?descender?=self.titleLabel.font.descender;??
if([lineColor?isKindOfClass:[UIColor?class]]){??
CGContextSetStrokeColorWithColor(contextRef,?lineColor.CGColor);??
????}??
CGContextMoveToPoint(contextRef,?textRect.origin.x,?textRect.origin.y?+?textRect.size.height?+?descender+1);??
CGContextAddLineToPoint(contextRef,?textRect.origin.x?+?textRect.size.width,?textRect.origin.y?+?textRect.size.height?+?descender+1);??
????CGContextClosePath(contextRef);??
????CGContextDrawPath(contextRef,?kCGPathStroke);??
}??
@end??
直接將這個(gè)類 copy 到工程中誉察,怜俐,然后將需要加下劃線的 Button 類名改為?HyperlinksButton就可以了,提供了 setColor: 這個(gè)接口原朝,可以設(shè)置下劃線顏色桥胞,代碼很簡單瞻坝,不解釋了句各。UILabel 同理可得甫题。
示例結(jié)果: