Ios 如何在不影响样式的情况下更新UILabel中attributedString的文本

Ios 如何在不影响样式的情况下更新UILabel中attributedString的文本,ios,interface-builder,nsattributedstring,Ios,Interface Builder,Nsattributedstring,我有一个UILabel,其外观在IB中使用“属性化”定义。我正在用运行时获取的文本更新标签。 如果在代码中更新标签的.text属性,则属性将消失。同样,如果我创建一个新的NSAttributedString来设置标签的AttributeText属性,我需要知道样式属性。如何从字符串/标签检索现有样式属性?我不认为我们应该定义两次样式属性,在IB中,然后在代码中 更新:我现在就是这样做的。它似乎起作用了。请注意,UILabel是UICollectionView中UICollectionViewCe

我有一个UILabel,其外观在IB中使用“属性化”定义。我正在用运行时获取的文本更新标签。 如果在代码中更新标签的.text属性,则属性将消失。同样,如果我创建一个新的
NSAttributedString
来设置标签的AttributeText属性,我需要知道样式属性。如何从字符串/标签检索现有样式属性?我不认为我们应该定义两次样式属性,在IB中,然后在代码中

更新:我现在就是这样做的。它似乎起作用了。请注意,UILabel是UICollectionView中UICollectionViewCell的一部分。代码有点臃肿,但似乎有效。我使用现有字符串创建一个新的可变属性字符串,然后替换字符。另外,因为这是集合视图界面的一部分,所以当该单元格没有文本时,我不能只取消设置文本或其他内容,因为我想这也会删除样式。因此,我只是将标签设置为“隐藏”,当没有文本时,保留样式

if (mytextstring != nil) {
    NSMutableAttributedString* newthing = [[NSMutableAttributedString alloc] initWithAttributedString:cell.label.attributedText];
    [newthing replaceCharactersInRange:NSMakeRange(0, newthing.length) withString:mytextstring];
    cell.label.attributedText = newthing;
    cell.label.hidden = NO;
}
else {
    cell.label.hidden = YES;
}

您可以调用
myTextField.attributedText
来获取
NSAttributedString
。使用
NSMutableAttributedString
mutableString
属性修改初始字符串。

NSMutableAttributedString
对象的
mutableString
属性为只读,无法设置。好的,抱歉,我在文档中找不到这样的内容。然后我会使用类的方法,比如
replaceCharactersRange:with字符串:
deleteCharactersRange:
。就像你已经做了一样。。。我找不到比这更好的了。