如何为NSSTRING分配UICOLOR



我有字典数组

[
        {
          "price": 0,
          "test_name": "Multislice CT Scan Virtual Bronchoscopy"
        },
        {
          "price": 0,
          "test_name": "Multislice CT Scan Dental"
        },
        {
          "price": 0,
          "test_name": "Multislice CT Scan Joint (3D)"
        },
        {
          "price": 0,
          "test_name": "Multislice CT Scan Lumbar"
        },
        {
          "price": 0,
          "test_name": "Multislice CT Scan Spine - Cervical / Thoracic"
        },
        {
          "price": 0,
          "test_name": "Multislice CT Scan CT Urography"
        }
]

和正在将Dictionary的数组转换为NSString,就像在每个字典值末尾附加 n

Multislice CT Scan Virtual Bronchoscopy  
Rs.0
Multislice CT Scan Dental  
Rs.0
Multislice CT Scan Joint (3D)  
Rs.0
Multislice CT Scan Lumbar  
Rs.0
Multislice CT Scan Spine - Cervical / Thoracic  
Rs.0
Multislice CT Scan CT Urography  
Rs.0
Multislice CT Scan (Arterial + Portal + Venous)  
Rs.0
Multislice CT Scan Abdomen Triphasic Lever  
Rs.0

现在我想要 rs.0 redcolor中的字符串...如何将红色给该特定字符串?

正在使用静态表..在那儿,将整个字符串分配给单标签。

您可以在iOS 6及更高版本中使用NSMutableAbeatTributterString。

示例代码:

    NSString *strFirst = @"Multislice CT Scan Virtual Bronchoscopy";
    NSString *strSecond = @"Rs.0";
    NSString *strComplete = [NSString stringWithFormat:@"%@n %@",strFirst,strSecond];
    NSMutableAttributedString *attributedString =[[NSMutableAttributedString alloc] initWithString:strComplete];
    [attributedString addAttribute:NSForegroundColorAttributeName
                  value:[UIColor redColor]
                  range:[strComplete rangeOfString:strSecond]];

   cell.textLabel.attributedText = attributedString;

nsmutableAbeatTributterString您想要的东西。

尝试一下它的示例代码

 NSString *strFirst = @"Multislice CT Scan Virtual Bronchoscopy";
    NSString *strSecond = @"Rs.0";

    NSString *strComplete = [NSString stringWithFormat:@"%@ %@",strFirst,strSecond];
    NSMutableAttributedString *attributedString =[[NSMutableAttributedString alloc] initWithString:strComplete];
    //you can change your string color as your need like below
    [attributedString addAttribute:NSForegroundColorAttributeName
                             value:[UIColor blackColor]
                             range:[strComplete rangeOfString:strFirst]];
    [attributedString addAttribute:NSForegroundColorAttributeName
                             value:[UIColor redColor]
                             range:[strComplete rangeOfString:strSecond]];

    self.yourLbl.attributedText = attributedString;

尝试使用此操作,您的所有Rs.0将显示为红色

NSString *str = @"Multislice CT Scan Virtual Bronchoscopy Rs.0 Multislice CT Scan Dental Rs.0";
NSMutableAttributedString *attributedString =[[NSMutableAttributedString alloc] initWithString:str];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(Rs.[0-9]*)" options:kNilOptions error:nil];
NSRange range = NSMakeRange(0,strFirst.length);
[regex enumerateMatchesInString:strFirst options:kNilOptions range:range usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
    NSRange subStringRange = [result rangeAtIndex:1];
    [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:subStringRange];
}];
self.label.attributedText = attributedString;

希望这对您有帮助。

使用此方法:

-(UIColor *)giveColorfromStringColor:(NSString *)colorname
{
    SEL labelColor = NSSelectorFromString(colorname);
    UIColor *color = [UIColor performSelector:labelColor];
    return color;
}

尝试此代码

- (NSString *)stringFromColor:(UIColor *)color
{
    const size_t totalComponents = CGColorGetNumberOfComponents(color.CGColor);
    const CGFloat * components = CGColorGetComponents(color.CGColor);
    return [NSString stringWithFormat:@"#%02X%02X%02X",
            (int)(255 * components[MIN(0,totalComponents-2)]),
            (int)(255 * components[MIN(1,totalComponents-2)]),
            (int)(255 * components[MIN(2,totalComponents-2)])];
}

最新更新