gpt4 book ai didi

ios - NSMutableAttributedString 无法正确设置属性或添加属性

转载 作者:行者123 更新时间:2023-11-29 01:20:36 27 4
gpt4 key购买 nike

我在下面有一个方法,我想用它来更改 UILabel 文本的最后 6 个字符的颜色,这将是括号中的日期,即 (1999 )。首先,我设置了 tableViewCell 的文本,然后获取了 attributedText 属性,这样我就可以获得 UILabel 文本的字体和大小。我不确定我做错了什么,但现在整个字符串都是黄色的,而不仅仅是标签文本的最后 6 个字符。有什么想法吗?

tableViewCell.titleLabel.text = speech.title;

NSAttributedString *titleAttributedString = tableViewCell.titleLabel.attributedText;
tableViewCell.titleLabel.attributedText = [speech titleAttributedString:titleAttributedString size:tableCell.titleLabel.font.pointSize];

// Speech class instance method
- (NSAttributedString *)titleAttributedString:(NSAttributedString *)attributedString size:(CGFloat)size {
NSRange range = NSMakeRange(attributedString.length - 6, 6);
NSMutableAttributedString *titleString = [attributedString mutableCopy];

NSDictionary *titleAttributesDictionary = [attributedString attributesAtIndex:0 effectiveRange:&range];
NSDictionary *dateAttributesDictionary = @{
NSFontAttributeName : titleAttributesDictionary[NSFontAttributeName],
NSForegroundColorAttributeName : [UIColor yellowColor]
};

// Neither of these lines solves the problem
// Both titleStrings are yellow
[titleString setAttributes:dateAttributesDictionary range:range];
[titleString addAttributes:dateAttributesDictionary range:range];
[titleString setAttributes:dateAttributesDictionary range:range];

return titleString;
}

最佳答案

您将在 attributesAtIndex: effectiveRange: 调用中覆盖计算出的 range 值。该调用要求索引 0 处的属性以及这些属性应用的有效范围,即整个字符串。当您对该值不感兴趣时​​(就在索引 0 处的字体后面),只需根据文档为 effectiveRange: 参数传递 NULL 即可。

HTH

关于ios - NSMutableAttributedString 无法正确设置属性或添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645843/

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