如何在UILabel中加下划线的文字?

如何在UILabel加下划线的文字?

我曾经尝试过把高度为0.5fUILabel放在文本下面。 当我在iPhone 4.3iPhone 4.3模拟器中运行我的应用程序时,这行标签是不可见的,但是它在iPhone 5.0模拟器之后是可见的。 为什么?

我怎样才能做到这一点?

Objective-C的

iOS 6.0>版本

UILabel支持NSAttributedString

 NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Hello Good Morning"]; [attributeString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:1] range:(NSRange){0,[attributeString length]}]; 

迅速

 let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Hello Good Morning") attributeString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range: NSMakeRange(0, attributeString.length)) 

定义

 - (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)aRange 

Parameters List:

name :指定属性名称的string。 属性键可以由另一个框架提供,也可以是您定义的定制键。 有关在何处查找系统提供的属性键的信息,请参阅NSAttributedString类参考中的概述部分。

value :与名称关联的属性值。

aRange :指定的属性/值对应用的字符范围。

现在像这样使用:

 yourLabel.attributedText = [attributeString copy]; 

iOS 5.1.1 <版本

您需要3 party attributed Label才能显示attributed text

1)参考TTTAttributedLabel链接。 其最好的第三方attributed Labeldisplay归属text

2)参考OHAttributedLabel的第三方attributed Label

看看TTTAttributedLabel 。 如果您被允许使用3D方组件,只需将您的UILabelreplace为TTTAttributedLabel(需要replace)即可。 适用于iOS <6.0!

devise师的方式 – 高度可定制的版本

我个人更喜欢自定义我的devise(S)尽可能多。 有时候,你会发现使用内置的下划线工具是不容易定制的。

下面是我如何做到这一点:

1首先,我为下划线创build一个UIView。 然后,您可以select您的背景颜色,在IB或以编程方式。 约束是关键。

创建您的下划线视图

2然后,你可以自定义下划线,只要你喜欢。 例如,要调整下划线的宽度以获得更好的视觉效果,请在Interface Builder中创build与约束的出口连接

在这里输入图像说明

3然后,您可以轻松地以编程方式自定义您的下划线视图。 例如在这里,为了给你一个想法,我们将比“面包”这个标题更加强调20px。

 var originalString: String = "Breads" let myString: NSString = originalString as NSString let size: CGSize = myString.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 14.0)]) self.widthUnderlineTitle.constant = size.width + 20 

结果:

在这里输入图像说明

UILabel上的Swift扩展:

还需要改进,任何想法都欢迎:

 extension UILabel{ func underLine(){ if let textUnwrapped = self.text{ let underlineAttribute = [NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue] let underlineAttributedString = NSAttributedString(string: textUnwrapped, attributes: underlineAttribute) self.attributedText = underlineAttributedString } } } 

我现在可以想到的一个缺点是,每当文本改变时都需要调用,而且没有实际的方法来closures它。

我正在使用Xcode 9和iOS 11.要在UILabel下面加下划线。 你可以同时使用1.使用代码2.使用xib

使用代码:

 NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"I am iOS Developer"]; [attributeString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:1] range:(NSRange){0,[attributeString length]}]; lblAttributed.attributedText = attributeString; 

使用Xib: 在这里输入图像说明

在这里输入图像说明

在这里输入图像说明

在这里输入图像说明

我们也可以使用button。

Swift 4.0

 var attributeString = NSMutableAttributedString(string: "Hello Good Morning") attributeString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range: NSRange)