所以我有以下问题:
我已经将字符串归因于UITextView中包含的字符串。属性字符串包含两部分 - 普通部分是普通文本,第二部分包含 NSURL - 因此为了更好地可视化,它看起来像:
欲了解更多信息,请阅读此处
我遇到的问题是,如果文本适合一行,我必须将其保留在一行中,如果"HERE"位于第二行,我必须将 READ 也放在第二行。
所以,第一种情况 - 如果一切都适合
欲了解更多信息,请阅读此处
所有其他情况 -
欲了解更多信息 在这里阅读
我试图通过检查屏幕大小是否大于文本字段边界来做到这一点,但它不起作用:
if (label.bounds.size.width < size.width) ...
我也尝试了其他类似的解决方案,但我认为它们都可以在普通 UILabel 上添加,而不是修改的属性文本。
如果您有任何想法如何处理,我将不胜感激。
谢谢:)
有多种解决方案可以解决此问题。
首先是使用不易破的空间
只需在单击此处之间添加"\u{00a0}",例如单击\u{00a0}HERE
这是链接
第二个是不是添加空格,而是可以在其中添加"_"。
例如
"CLICK_HERE",您可以将"_"的颜色替换为清除。
这是代码
class ViewController: UIViewController {
@IBOutlet weak var temp : UILabel!
override func viewDidLoad() {
let myString = "For more detail information READ_HERE"
let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: myString)
attributedString.setColorForText(textForAttribute: "_", withColor: .clear)
temp.attributedText = attributedString
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
extension NSMutableAttributedString {
func setColorForText(textForAttribute: String, withColor color: UIColor) {
let range: NSRange = self.mutableString.range(of: textForAttribute, options: .caseInsensitive)
self.addAttribute(NSAttributedString.Key.foregroundColor, value: color, range: range)
}
}