gpt4 book ai didi

iOS - 如何在 swift 中使用 `NSMutableString`

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:24 27 4
gpt4 key购买 nike

我看过这个 Objective-C 代码,但我正在努力快速地做同样的事情:

NSMutableAttributedString *res = [self.richTextEditor.attributedText mutableCopy];

[res beginEditing];
__block BOOL found = NO;
[res enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, res.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {
if (value) {
UIFont *oldFont = (UIFont *)value;
UIFont *newFont = [oldFont fontWithSize:oldFont.pointSize * 2];
[res removeAttribute:NSFontAttributeName range:range];
[res addAttribute:NSFontAttributeName value:newFont range:range];
found = YES;
}
}];
if (!found) {
// No font was found - do something else?
}
[res endEditing];
self.richTextEditor.attributedText = res;

我试图通过遍历每个属性来更改 NSMutableAttributedString 中的字体。我很高兴听到有更好的方法,但如果有人能帮我翻译上面的内容,我将非常感激。

最佳答案

这是一个基本的实现。这对我来说似乎很简单,而且您没有提供您的尝试,所以我不确定您是否有类似的东西并且它有问题,或者您是否只是 Swift 的新手。

一个区别是此实现使用可选转换 (as?),我这样做是为了演示这个概念。实际上,这不需要是可选的,因为 NSFontAttributeName 保证提供 UIFont

var res : NSMutableAttributedString = NSMutableAttributedString(string: "test");

res.beginEditing()

var found = false

res.enumerateAttribute(NSFontAttributeName, inRange: NSMakeRange(0, res.length), options: NSAttributedStringEnumerationOptions(0)) { (value, range, stop) -> Void in
if let oldFont = value as? UIFont {
let newFont = oldFont.fontWithSize(oldFont.pointSize * 2)
res.removeAttribute(NSFontAttributeName, range: range)
res.addAttribute(NSFontAttributeName, value: newFont, range: range)
found = true
}
}

if found == false {

}

res.endEditing()

关于iOS - 如何在 swift 中使用 `NSMutableString`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554643/

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