如何在UILabel中加下划线的文字?
如何在UILabel
加下划线的文字?
我曾经尝试过把高度为0.5f的UILabel
放在文本下面。 当我在iPhone 4.3和iPhone 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
Label
以display
归属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)