如何在中添加下划线文本UILabel
?
我曾尝试制作UILabel
高度为0.5f的 a并将其放在文本下方。当我在iPhone 4.3和iPhone 4.3 模拟器中运行我的应用程序时,此行标签不可见,但在iPhone 5.0 模拟器之后可见。为什么?
我怎样才能做到这一点?
如何在中添加下划线文本UILabel
?
我曾尝试制作UILabel
高度为0.5f的 a并将其放在文本下方。当我在iPhone 4.3和iPhone 4.3 模拟器中运行我的应用程序时,此行标签不可见,但在iPhone 5.0 模拟器之后可见。为什么?
我怎样才能做到这一点?
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:指定属性名称的字符串。属性键可以由另一个框架提供,也可以是您定义的自定义键。有关在何处查找系统提供的属性键的信息,请参阅 NSAttributedString 类参考中的概述部分。
value:与 name 关联的属性值。
aRange:指定属性/值对适用的字符范围。
现在像这样使用:
yourLabel.attributedText = [attributeString copy];
您需要3 party attributed Label
显示attributed text
:
1) 参考TTTAttributedLabel链接。其最好的第三方attributed
Label
要display
归功于text
。
2)为第三方参考OHAttributedLabelattributed
Label
我正在使用 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;
我们也可以使用 for 按钮。
我个人更喜欢尽可能地定制我的设计。有时,您会发现使用内置的下划线工具并不容易自定义。
这是我的做法:
1首先,我为下划线创建一个 UIView。然后,您可以在 IB 中或以编程方式选择背景颜色。约束是这里的关键。
2然后,您可以根据需要自定义下划线。例如,要调整下划线的宽度以获得更好的视觉效果,请在 Interface Builder 中创建与约束的出口连接
3然后,您可以轻松地以编程方式自定义下划线视图。例如在这里,为了给你一个想法,我们将使下划线比标题“面包”宽 20 px:
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
Results:
看看TTTAttributedLabel。如果您被允许使用 3d 方组件,只需在您需要的地方用 TTTAttributedLabel 替换您的 UILabel(直接替换)。适用于 iOS < 6.0!
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
}
}
}
我现在能想到的一个缺点是每次文本更改时都需要调用它,并且没有实际的方法来关闭它......
斯威夫特 4.0
var attributeString = NSMutableAttributedString(string: "Hello Good Morning")
attributeString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range: NSRange)
斯威夫特 5
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: yourLabel.text ?? "")
attributeString.addAttribute(NSAttributedString.Key.underlineStyle, value: 1, range: NSMakeRange(0, attributeString.length))
yourLabel.attributedText = attributeString