gpt4 book ai didi

swift - 更改 TextView 中字符串数组的样式 - swift - 编辑

转载 作者:搜寻专家 更新时间:2023-11-01 06:02:22 25 4
gpt4 key购买 nike

我的第一个问题是如何在 textView 中更改单词示例“test”的字体,@bkrl 和@Torongo 正确回答了这个问题。

func changeAllOccurence(of string: String, font: UIFont) -> NSAttributedString {
let attributedString = NSMutableAttributedString(string: self)
var range = NSMakeRange(0, attributedString.mutableString.length)

while(range.location != NSNotFound)
{
range = attributedString.mutableString.range(of: string, options: .caseInsensitive, range: range)
if(range.location != NSNotFound)
{
attributedString.addAttribute(NSFontAttributeName,
value: font,
range: range)
range = NSMakeRange(range.location + range.length, self.characters.count - (range.location + range.length));
}
}

return attributedString
}

由于我仍然不熟悉上面的代码,我尝试添加几行以概括代码,以便它适用于一组字符串,而不仅仅是一个字符串。但可以肯定的是,它没有用,因为它只改变了最后一个词的字体,这是合理的,因为最终的改变将针对最后一个词,即“用法”:

        let words = ["example", "usage"]
for word in words {
let attributedText = text.changeAllOccurence(of: word, font: UIFont.boldSystemFont(ofSize: 17))
textview.attributedText = attributedText
}

有人可以建议如何改进@Toromgo 提供的代码以便处理任何字符串数组而不是一个字符串吗?

最佳答案

您可以像这样创建扩展:

extension String {

func change(font: UIFont, of string: String) -> NSAttributedString {
let attributedString = NSMutableAttributedString(string: self)
let subStringRange = attributedString.mutableString.range(of: string,
options: .caseInsensitive)
if subStringRange.location != NSNotFound {
attributedString.addAttribute(NSFontAttributeName,
value: font,
range: subStringRange)
}
return attributedString
}

}

用法:

let text = "This is example of usage extension"
let attributedText = text.change(font: UIFont.boldSystemFont(ofSize: 17), of: "example")
textView.attributedText = attributedText

希望对您有所帮助!

关于swift - 更改 TextView 中字符串数组的样式 - swift - 编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45779135/

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