简体   繁体   English

附加 NSString 和 NSMutableAttributedString

[英]Appending NSString and NSMutableAttributedString

I want to merge NSString and NSMutableAttributedString .我想合并NSStringNSMutableAttributedString

In below code i want to make self.txtSearch as custom bold size and color.在下面的代码中,我想将self.txtSearch设为自定义粗体大小和颜色。

code -代码 -

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
SearchViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SearchViewCell"];
AutoSuggestModel *autoSuggestModel = [self.autoSuggestArray objectAtIndex:indexPath.row];

if ([[autoSuggestModel type] isEqualToString:@"product"] || [[autoSuggestModel type] isEqualToString:@"category"]){

    cell.lblText.text = [NSString stringWithFormat:@"%@ in %@", self.txtSearch , [autoSuggestModel label]] ;

}else{
    cell.lblText.text = [autoSuggestModel label];
}
return cell;
}

I could make bold particular string with below code.我可以用下面的代码制作粗体的特定字符串。 but i want to append both string.但我想附加两个字符串。

NSMutableAttributedString *boldString = [[NSMutableAttributedString alloc] initWithString:self.txtSearch];
    NSRange boldRange = [[autoSuggestModel label]   rangeOfString:self.txtSearch];
    [boldString addAttribute: NSFontAttributeName value:[UIFont boldSystemFontOfSize:16] range:boldRange];
    [cell.lblText setAttributedText: boldString];

update you method like bellow像下面这样更新你的方法

if ([[autoSuggestModel type] isEqualToString:@"product"] || [[autoSuggestModel type] isEqualToString:@"category"]){

        cell.textLabel.attributedText = [self getBoldText:cell withSearch:@"search text" withAutoSuggestModel:@"autoSuggestModel"];

    }else{
        cell.lblText.text = [autoSuggestModel label];
   }

//check above code by the following method //通过下面的方法检查上面的代码

-(NSMutableAttributedString*)getBoldText:(UITableViewCell*)cell withSearch:(NSString*)searchText withAutoSuggestModel:(NSString*)autoSuggestModelText{
NSString *title = [NSString stringWithFormat:@"%@ in %@", searchText,autoSuggestModelText];
cell.textLabel.text = title;
UIColor *color = [UIColor redColor];
UIFont *font = [UIFont boldSystemFontOfSize:16];

NSDictionary *attrs = @{NSForegroundColorAttributeName : color,NSFontAttributeName:font};

NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithAttributedString:cell.textLabel.attributedText];
[attrStr addAttributes:attrs range:[title rangeOfString:autoSuggestModelText]];
return attrStr;

} }

A very cursory look at the NSString documentation has a section called "combining strings" and a method called stringByAppendingString:粗略地看一下NSString文档有一个名为“组合字符串”的部分和一个名为stringByAppendingString:的方法stringByAppendingString:

Using this method, it should be incredibly straight-forward to accomplish what you're trying to do.使用这种方法,完成您想要做的事情应该非常简单。

NSMutableAttributedString *boldString = [[NSMutableAttributedString alloc] 
    initWithString:[self.txtSearch stringByAppendingString:yourMutableString]];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM