我使用NSAttributeString
在我的文字上设置删除,我希望它延伸到whitespace
。
我已经设置了正确的范围,但是通过仅覆盖文本字符。除非我在它之前和之后添加一些非空文本,否则删除是忽略空格。
如何通过在没有额外文本的情况下扩展空格来进行删除?
答案 0 :(得分:3)
我今天遇到了同样的问题,现有的答案都没有给我一个解决方案,我认为它应该是应该的。经过研究,我发现了使用Unicode字符的更简洁的解决方案。
用一个或多个不间断的Unicode空格字符(U+00A0)
填充文本的每一行,以根据需要扩展行:
let attributedText = NSAttributedString(
string: "\u{00A0}\(someText)\u{00A0}",
attributes: [.strikethroughStyle: NSUnderlineStyle.single.rawValue]
)
答案 1 :(得分:2)
我没有找到任何解决方案,但是你的最后一个选项意味着将第一个和最后一个字符添加为.
,空格可以尝试一件事。将第一个和最后一个字符的NSForegroundColorAttributeName
设置为标签的背景颜色,或将NSFontAttributeName
设置为UIFont.systemFont(ofSize: 0.1)
。所以它会是这样的。你还没有指定你的答案语言,所以我在最新的Swift 3中发布了答案。
let attributedText = NSMutableAttributedString(string: self.lbl.text!)
attributedText.addAttributes([NSStrikethroughStyleAttributeName: 2], range: NSMakeRange(0, self.lbl.text!.characters.count))
self.lbl.attributedText = attributedText
在使用NSForegroundColorAttributeName
&之前NSFontAttributeName
强>
现在,您可以使用NSForegroundColorAttributeName
或NSFontAttributeName
来隐藏第一个和最后一个dot(.)
字符。
let attributedText = NSMutableAttributedString(string: self.lbl.text!)
attributedText.addAttributes([NSStrikethroughStyleAttributeName: 2], range: NSMakeRange(0, self.lbl.text!.characters.count))
attributedText.addAttributes([NSForegroundColorAttributeName: UIColor.white], range: NSMakeRange(0, 1))
attributedText.addAttributes([NSForegroundColorAttributeName: UIColor.white], range: NSMakeRange(self.lbl.text!.characters.count - 1, 1))
//Or either Set NSFontAttributeName instead of NSForegroundColorAttributeName
//attributedText.addAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 0.1)], range: NSMakeRange(0, 1))
//attributedText.addAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 0.1)], range: NSMakeRange(self.lbl.text!.characters.count - 1, 1))
self.lbl.attributedText = attributedText
答案 2 :(得分:0)
对于那些只想通过空白水平线的人,这是解决问题的方法(快速4):
let line = String(repeating: "\u{23AF}", count: 10)