简体   繁体   中英

How to assign UIcolor to NSString?

I have array of dictionary

[
        {
          "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"
        }
]

And am converting this array of Dictionary to NSString like by appending \\n at the end of each dictionary value

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

And now I want Rs.0 string in redColor... How to give red color to that specific string???

Am using static table.. in that am assigning this whole string to single label..

NSMutableAttributedString what you looking for.

try this its and sample code

 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;

You can use NSMutableAttributedString in iOS 6 and above.

Example code:

    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;

Try something like this using this your all Rs.0 will be display as Red color

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;

Hope this will help you.

Use this method:

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

Try this code

- (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)])];
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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