gpt4 book ai didi

ios - 更改 UIButton attributedStrings enumerateSubstrings 字符串范围的标题

转载 作者:行者123 更新时间:2023-11-28 15:14:36 26 4
gpt4 key购买 nike

这个问题在 SO 上有一些变体 - 但似乎没有一个针对 Swift 4 的最新答案......我想用一个属性字符串设置 UIButton 的标题,该字符串的一部分在大胆和部分不。我正在基于 Swift 4 中的新范围尝试此代码。但代码似乎并不影响子字符串。有人有这个工作吗?`

     let text = NSLocalizedString("     BOLD TEXT not \r\n  bold text", comment: "")
let attributedString = NSMutableAttributedString(string: text)

text.enumerateSubstrings(in: text.startIndex..<text.endIndex, options: .byWords) {
(substring, substringRange, _, _) in
if substring == "BOLD TEXT" {
attributedString.addAttribute(.font, value: UIFont.boldSystemFont(ofSize: 30),
range: NSRange(substringRange, in: text))
}
}
cell.multiFunctionButton.setAttributedTitle(attributedString, for: .normal)`

正如@larme 在下面所说的,粗体文本是两个词。

所以我最终使用了这个:

let str = NSString(string: text)
let theRange = str.range(of: "BOLD TEXT")
let attribute = [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 20),
NSAttributedStringKey.foregroundColor: UIColor.red]
attributedString.addAttributes(attribute, range: theRange)

最佳答案

如果您将此添加到您的代码段:

        (substring, substringRange, _, _) in
print(substring)
if substring == "BOLD TEXT" {

您将在控制台中看到 if 子句永远不会执行,因为您的子字符串永远不会与“BOLD TEXT”匹配:

可选(“粗体”)
可选(“文本”)
可选(“不”)
可选(“粗体”)
可选(“文本”)

要获取“BOLD TEXT”的范围,请使用 let subtringRange = str.range(of: "BOLD TEXT")

因此为按钮准备属性字符串的正确解决方案是:

let text = NSLocalizedString("     BOLD TEXT not \r\n  bold text", comment: "")
let attributedString = NSMutableAttributedString(string: text)

guard let substringRange = text.range(of: "BOLD TEXT") else {
return
}
attributedString.addAttribute(.font, value: UIFont.boldSystemFont(ofSize: 30),
range: NSRange(substringRange, in: text))

关于ios - 更改 UIButton attributedStrings enumerateSubstrings 字符串范围的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47073374/

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