iOS - Using TTTAttributedLabel to set two color text

后端 未结 2 1371
抹茶落季
抹茶落季 2021-02-06 06:22

I\'m creating iOS app that has a label. I want to set two colors. One for first part and other color for remaining part.
I\'ve seen some messages in Stack over flow that, TT

相关标签:
2条回答
  • 2021-02-06 06:25

    You could use TTTRegexAttributedLabel available at : https://github.com/kwent/TTTRegexAttributedLabel. (TTTAttributedLabel based but more easier to use with regular expressions)

      //SET FONT ONLY ON FIRST MATCH REGEX
      TTTRegexAttributedLabel *label = [[TTTRegexAttributedLabel alloc] init];
      label.textColor = [UIColor whiteColor];
      NSString *s = @"ABC > def";
      [self.label setText:s withFirstMatchRegex:@"^[a-zA-Z ]*>"
                            withFont:[UIFont systemFontOfSize:12]
                            withColor:[UIColor brownColor]];
    
    0 讨论(0)
  • 2021-02-06 06:48
    NSString* text = @"ABC > def";
    attributedLabel = [[[TTTAttributedLabel alloc] initWithFrame:frame] autorelease];
    attributedLabel.numberOfLines = 0;
    attributedLabel.lineBreakMode = UILineBreakModeWordWrap;
    attributedLabel.fontColor = [UIColor brownColor];
    [attributedLabel setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:^(NSMutableAttributedString *mutableAttributedString) {
        NSRange whiteRange = [text rangeOfString:@"def"];
        if (whiteRange.location != NSNotFound) {
        // Core Text APIs use C functions without a direct bridge to UIFont. See Apple's "Core Text Programming Guide" to learn how to configure string attributes.
            [mutableAttributedString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)[UIColor whiteColor].CGColor range:whiteRange];
        }
    
        return mutableAttributedString;
    }];
    
    [attributedLabel sizeToFit]; //this may not be needed if the frame provided is large enough
    

    That searches for "def" in your string and sets the foreground color of the text to white for that range. Hope this helps. I only just learned this yesterday. Came across your question whilst trying to figure it out for myself.

    0 讨论(0)
提交回复
热议问题