gpt4 book ai didi

swift - 单击 Swift 中 UILabel 中除 NSUrl 以外的部分字符串的操作

转载 作者:行者123 更新时间:2023-11-28 06:34:07 25 4
gpt4 key购买 nike

我尝试在点击 uilabel 中的特定字符串时执行操作。在下面的例子中,我试图在“条款和条件”和“隐私政策”上做出。在整个字符串中 “点击注册,即表示您特此同意我们的\n条款和条件以及隐私政策。”。但我部分地实现了这意味着“条款和条件”和“隐私”。我已经给出了范围,但仍然无法在给定范围内工作。原因可能是当我给出范围时,我使用的是 NSString 而不是 NSAttributed 字符串。如果我是正确的,我应该如何重写代码才能正常工作。

func labelTapped(sender: UITapGestureRecognizer){
let ts = NSTextStorage(attributedString: NSAttributedString(string:mylabel.text!))
let lm = NSLayoutManager()
ts.addLayoutManager(lm)
let tc = NSTextContainer(size: CGSizeMake(mylabel.frame.size.width,mylabel.frame.size.height))
lm.addTextContainer(tc) // ****
tc.lineFragmentPadding = 0
let toRange1 = (mylabel.text! as NSString).rangeOfString("Privacy Policy.")
let toRange2 = (mylabel.text! as NSString).rangeOfString("Terms and Conditions")
let gr1 = lm.glyphRangeForCharacterRange(toRange1, actualCharacterRange: nil) // ****
let gr2 = lm.glyphRangeForCharacterRange(toRange2, actualCharacterRange: nil)

let glyphRect1 = lm.boundingRectForGlyphRange(gr1, inTextContainer: tc)
let glyphRect2 = lm.boundingRectForGlyphRange(gr2, inTextContainer: tc)

最佳答案

我找到了解决方案。我做错了@

let ts = NSTextStorage(attributedString: NSAttributedString(string:mylabel.text!))

应该写成

let ts = NSTextStorage(attributedString: mylabel.attributedText!)

为了准确,在 labelTapped() 方法的第一行使用 self.view.layoutIfNeeded()

关于swift - 单击 Swift 中 UILabel 中除 NSUrl 以外的部分字符串的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39531294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com