我正在尝试创建一个“填空”用户界面,其中一部分属性字符串(显示在UITextView或UILabel中)被隐藏并加下划线,然后在用户猜到后加下划线的部分是什么。
我正在通过使字符串的“隐藏”部分具有NSUnderlineStyle.thick并使文本颜色清晰来实现此目的,但是问题是,清晰的文本仍与下划线重叠,因此,如果单词中包含字母在该行的下方(例如“ y”),下划线出现了意外中断。
我的问题是:如何使下划线与文本重叠,或者如何使文本真正透明?这个问题涵盖了完全相反的问题:Underline covers text in NSAttributedString。我正在尝试弄清楚如何从该问题中故意获得“越野车”状态,其中在文本上有一个粗的下划线。
我考虑并拒绝的另一种选择是简单地将字符串替换为空格并在其下划线,因为这会改变文本的长度,并且看起来很奇怪,并且我不想使用等宽字体。
值得的是以下代码:
let attrs = [NSAttributedStringKey.underlineStyle: NSUnderlineStyle.styleThick.rawValue]
attributedText.addAttributes(attrs, range: rangeOfStringToBeReplaced)
attributedText.addAttribute(NSAttributedStringKey.underlineColor, value: UIColor.red, range: rangeOfStringToBeReplaced)
attributedText.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.clear, range: rangeOfStringToBeReplaced)
我已经使用UILabel和UITextView进行了尝试,但无法正常工作。