我有一个长字符串作为段落,并希望在字符串中为特定单词(字符串中出现的所有数字)着色。谁能帮我吗? 感谢
答案 0 :(得分:5)
将字符串转换为属性字符串(可变),然后搜索字符串以查找要更改/突出显示的部分的范围,并将属性添加到属性字符串的那些范围。
答案 1 :(得分:3)
你可以使用 https://github.com/kovpas/BOString
然后您的代码可以是这样的:
NSString *string = @"String test String";
NSAttributedString *result = [string bos_makeString:^(BOStringMaker *make) {
make.foregroundColor(UIColor blackColor]);
make.each.substring(@"String", ^{
make.foregroundColor(UIColor greenColor]);
});
}];
这会使文本中的每个“字符串”变为绿色。剩下的就是黑色。然后将此属性字符串放入UILabel \ UITextView等。
答案 2 :(得分:1)
尝试这样就可以了解
注意:我们无法在一个标签或文本字段中显示"不同的颜色"。标记"等于单词中的字母数"。并排查看作为一个标签。
在Viewcontroller.h中
@property (strong, nonatomic) IBOutlet UITextField *tf1;
@property (strong, nonatomic) IBOutlet UITextField *tf2;
@property (strong, nonatomic) IBOutlet UITextField *tf3;
@property (strong, nonatomic) IBOutlet UITextField *tf4;
@property (strong, nonatomic) IBOutlet UITextField *tf5;
在ViewController.m中
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableString *strName=[[NSMutableString alloc]initWithFormat:@"ABCDE"];
for (int i=0; i<[strName length]; i++) {
NSString *str=[strName substringWithRange:NSMakeRange(i, 1)];
if (i==0) {
self.tf1.text=str;
self.tf1.textColor=[UIColor redColor];
}
else if (i==1){
self.tf2.text=str;
self.tf2.textColor=[UIColor greenColor];
}
else if (i==2){
self.tf3.text=str;
self.tf3.textColor=[UIColor orangeColor];
}
else if (i==3){
self.tf4.text=str;
self.tf4.textColor=[UIColor grayColor];
}
else if (i==4){
self.tf5.text=str;
self.tf5.textColor=[UIColor redColor];
}
}
}
答案 3 :(得分:0)
为UILabel创建一个类别并添加这些功能。
- (void)boldRange:(NSRange)range {
if (![self respondsToSelector:@selector(setAttributedText:)]) {
return;
}
NSMutableAttributedString *attributedText;
if (!self.attributedText) {
attributedText = [[NSMutableAttributedString alloc] initWithString:self.text];
} else {
attributedText = [[NSMutableAttributedString alloc] initWithAttributedString:self.attributedText];
}
[attributedText setAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont boldSystemFontOfSize:self.font.pointSize] } range:range];
self.attributedText = attributedText;
}
- (void)boldSubstring:(NSString*)substring {
NSRange range = [self.text rangeOfString:substring];
// [self boldRange:range];
if (![self respondsToSelector:@selector(setAttributedText:)]) {
return;
}
NSMutableAttributedString *attributedText;
if (!self.attributedText) {
attributedText = [[NSMutableAttributedString alloc] initWithString:self.text];
} else {
attributedText = [[NSMutableAttributedString alloc] initWithAttributedString:self.attributedText];
}
while (range.location != NSNotFound)
{
[attributedText setAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont boldSystemFontOfSize:self.font.pointSize] } range:range];
NSRange rangeToSearch;
rangeToSearch.location = range.location + range.length;
rangeToSearch.length = self.text.length - rangeToSearch.location;
range = [self.text rangeOfString:substring options:0 range:rangeToSearch];
[attributedText setAttributes:@{NSForegroundColorAttributeName: [UIColor redColor],NSFontAttributeName:[UIFont boldSystemFontOfSize:self.font.pointSize] } range:range];
self.attributedText = attributedText;
}
}
使用为
[someLabel boldSubstring: @"0"];
我已经改变了颜色和粗体特殊字符。相应地改变它 希望它有所帮助。
答案 4 :(得分:-1)
在“界面”构建器中,您可以直接将其设置为Attributed,如图所示,
在这里,您可以选择特定世界并更改其颜色。