gpt4 book ai didi

iphone - 使用 addAttribute 修改整个 NSMutableAttributedString :

转载 作者:行者123 更新时间:2023-12-03 18:56:29 28 4
gpt4 key购买 nike

我正在寻找一种方法,将句子中的第一个单词着色为与句子其余部分不同的颜色。 METHOD_001 首先将整个字符串设置为白色,然后将前 8 个字符重新设置为红色。 METHOD_002 将前 8 个字符设置为红色,然后使用字符串长度计算剩余字符并将其设置为白色。

METHOD_001 绝对是最好的,但我很好奇是否有更简单的方法,我希望找到一个不带范围的 NSMutableAttributedString addAttribute:只是将属性应用于整个字符串,似乎有点疏忽,对 NSMutableAttributedString 的所有修改都要求您指定一个范围,我是否遗漏了一些东西?

注意: 代码包含硬编码值以提高可读性。

// METHOD_001
NSMutableAttributedString *attrString_001 = [[NSMutableAttributedString alloc] initWithString:@"Distance 1720 mm" attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
[attrString_001 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)];
[[self nameLabel] setAttributedText:attrString_001];

// METHOD_002
NSString *string = @"Distance 1720 mm";
NSUInteger stringLength = [string length];
NSMutableAttributedString *attrString_002 = [[NSMutableAttributedString alloc] initWithString:string];
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)];
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(9, (stringLength-9))];
[[self distanceLabel] setAttributedText:attrString_002];

最佳答案

实际上有一个非常简单的方法可以做到这一点。即使您为标签设置了属性文本,首先它会通过标签的常规属性进行样式化,然后您的属性字符串会覆盖相应的字符串。因此,如果您事先(在 Storyboard 或代码中)执行 [distanceLabel setTextColor:[UIColor WhiteColor]] ,则可以使用 attr 仅重新着色所需的部分。字符串并达到您想要的效果。

关于iphone - 使用 addAttribute 修改整个 NSMutableAttributedString :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931698/

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