如何在iPhone应用程序中为文本加下划线

时间:2011-02-08 10:05:32

标签: objective-c ios4 underline

如何在iphone下划线(目标c)???

4 个答案:

答案 0 :(得分:3)

UILabel没有简单的下划线。所以有两种方法:

  1. 使用UIWebView,您可以使用<span style="text-decoration:underline">underlined html text<span>
  2. 为所需文字加下划线
  3. 自定义UILabel - 对于简单的单行标签来说,这是一个好主意。您应该创建一些继承CUILabel的{​​{1}}类,并使用以下代码替换UILabel部分中的drawRect方法:
  4. `

    @implementation

答案 1 :(得分:1)

除了NR4TR之外,另一个选择是使用CoreText。

答案 2 :(得分:0)

我将NR4TR的代码更改为更自动:

#import "UILabelUnderlined.h"

@implementation UILabelUnderlined

@synthesize underlineWidth;

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
    self.underlineWidth = 1.0f;
}
return self;
}

- (void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();

CGFloat red;
CGFloat green;
CGFloat blue;
CGFloat alpha;
[self.textColor getRed:&red green:&green blue:&blue alpha:&alpha];

CGContextSetRGBStrokeColor(ctx, red, green, blue, 1.0f); // Your underline color
CGContextSetLineWidth(ctx, self.underlineWidth);

CGSize constraintSize = CGSizeMake(MAXFLOAT, MAXFLOAT);
CGSize labelSize;
labelSize = [self.text sizeWithFont:self.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];  

CGContextMoveToPoint(ctx, 10, self.bounds.size.height - 1);
CGContextAddLineToPoint(ctx, labelSize.width + 10, self.bounds.size.height - 1);

CGContextStrokePath(ctx);

[super drawRect:rect];  
}

@end

答案 3 :(得分:0)

你可以使用webview&amp;检查&amp;中选中“链接”复选框。给html文本

    htmlContentTxt = @"<a title="XYZ" href="http://www.XYZ.com">www.XYZ.com</a>";
    [webview loadHTMLString:htmlContentTxt baseURL:nil];