如何指定标签标记文本?Swift中为Label文本添加删除线的方法
嘿,针对你的两个问题,我来给你详细解答:
一、关于指定标签标记目标文本
在Swift里,我们没有HTML那种直接用标签包裹文本的语法,但可以通过NSAttributedString(可变版本是NSMutableAttributedString)来实现类似“标记特定文本”的效果——本质就是给指定范围的文本设置专属样式(比如颜色、下划线、删除线等),这和HTML用标签标记文本的作用是一样的。
举个简单例子,比如给字符串里的某几个字设置红色高亮:
let originalText = "这是一段需要标记的文本" let attributedText = NSMutableAttributedString(string: originalText) // 给“需要标记”这4个字设置红色 attributedText.addAttribute( .foregroundColor, value: UIColor.red, range: NSRange(location: 4, length: 4) ) yourLabel.attributedText = attributedText
只要调整range参数和对应的属性,就能精准“标记”任意你想要的文本片段。
二、给Label添加删除线效果(对应HTML的
<s>标签) 这个需求用NSAttributedString就能轻松实现,分两种场景:
1. 给整个Label文本加删除线
直接创建带删除线属性的富文本,赋值给Label的attributedText即可:
let strikeText = "这段文本要添加删除线" let attributedString = NSAttributedString( string: strikeText, attributes: [ NSAttributedString.Key.strikethroughStyle: NSUnderlineStyle.single.rawValue ] ) yourLabel.attributedText = attributedString
这里的NSUnderlineStyle.single是单条删除线,你还可以用.thick(粗线)或者.double(双线)来调整样式。
2. 给部分文本加删除线
如果只需要给文本中的某一段加删除线,就用可变富文本指定范围:
let originalText = "只有这段要加删除线,其他内容不变" let attributedText = NSMutableAttributedString(string: originalText) // 给“这段要加删除线”设置删除线(位置从第2个字符开始,长度7) attributedText.addAttribute( .strikethroughStyle, value: NSUnderlineStyle.single.rawValue, range: NSRange(location: 2, length: 7) ) yourLabel.attributedText = attributedText
额外小技巧:如果想给删除线设置颜色,可以加上strikethroughColor属性:
let coloredStrikeText = "带红色删除线的文本" let attributedString = NSAttributedString( string: coloredStrikeText, attributes: [ .strikethroughStyle: NSUnderlineStyle.single.rawValue, .strikethroughColor: UIColor.red ] )
内容的提问来源于stack exchange,提问作者user9203791
相关产品推荐
相关产品推荐

