0

のさまざまなテキストに対してさまざまなフォントを表示する必要がありますUILabel

次のように、属性テキストを使用して、単一のラベルで属性テキストを持つさまざまなフォントを管理できることを知っています。

NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"Hello. That is a test attributed string."];
[str addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(3,5)];
[str addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(10,7)];
[str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue-Bold" size:20.0] range:NSMakeRange(20, 10)];
agendaLabel.attributedText = str;

しかし、ここには大量のデータがあり、時間がある場所が非常に多いため、範囲を明示的に設定せずに、文字列内の時間を太字にする必要があります。

午前 7:00 ~ 午前 7:15 朝食

午前 7:30 - 会議 午後 12:30 会議

大量のデータに上記のような場所がたくさんあります。

4

2 に答える 2

1
  NSError *error;
NSString *display_string = @"But here I have a large amount of data and so many places I have times, I need to bold the time where ever it is in the string, without explicitly setting the range. \n7:00 a.m. – 7:15 a.m. Breakfast. \n7:30 a.m. - Meeting 12:30 p.m. Conference \nI have many places like above in a bulk amount of data.";
NSMutableAttributedString *attri_str = [[NSMutableAttributedString alloc]initWithString:display_string];

NSRegularExpression *regex = [NSRegularExpression
                              regularExpressionWithPattern:@"([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9] (a.m.|p.m.)"
                              options:NSRegularExpressionCaseInsensitive
                              error:&error];

[regex enumerateMatchesInString:display_string options:0 range:NSMakeRange(0, [display_string length])    usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
    NSLog(@"matching case");//NSMakeRange(begin, end)
    [attri_str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue" size:30] range:[match range]];

}];

label.attributedText = attri_str; 

このコード スニペットを試してください。お役に立てば幸いです

于 2013-09-30T09:01:40.883 に答える
0

こんにちは @ user2732294 文字列の長さを使用しました。以下のコードを確認してください

NSString *needToChangeStr = [[APP_DELEGATE.MuDict_Applied_Language valueForKey:[[NSUserDefaults standardUserDefaults] valueForKey:@"Applied_Language"]] valueForKey:@" Building security system"];

    NSString *display_string=[NSString stringWithFormat:@"Test. %@",needToChangeStr];

    NSMutableAttributedString *attri_str = [[NSMutableAttributedString alloc]initWithString:display_string];



    int begin=[display_string length]-[needToChangeStr length];
    int end=[needToChangeStr length];

    [attri_str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue" size:30] range:NSMakeRange(begin, end)];
    [attri_str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue-Bold" size:30] range:NSMakeRange(0, begin)];

//    [attri_str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, end)];

    [attri_str addAttribute:(id)kCTForegroundColorAttributeName value:[UIColor colorWithRed:35/255 green:86/255 blue:109/255 alpha:1.0] range:NSMakeRange(0, begin)];
    [attri_str addAttribute:(id)kCTForegroundColorAttributeName value:[UIColor colorWithRed:44/255 green:92/255 blue:114/255 alpha:1.0] range:NSMakeRange(begin, end)];


//    [attri_str addAttribute:(id)kCTForegroundColorAttributeName
//                      value:(id)[UIColor colorWithRed:31/255 green:68/255 blue:97/255 alpha:1.0].CGColor
//                      range:NSMakeRange(0, end)];

    Label_Center.attributedText = attri_str;
于 2013-09-30T07:09:46.783 に答える