2013-11-12 2 views
3

Следующий код принимает строку @ «десять в степени два = 10 [2]» и установить красный цвет на номер 2AddAttribute к NSString, которые представляют собой «к власти ..»

Q : Я хотел бы, чтобы это (фантазии) эффект:

enter image description here

(ум, что я ищу для общего эффекта, которые представляют собой небольшие, небольшое количество выше линии - сразу после строки, не обязательно «в сила ... », тем не менее это должно выглядеть как показано выше):

-(void)textAttribute 
{ 
     NSString *myString = @"ten to the power of two = 10[2]"; 
     NSRange start = [myString rangeOfString:@"["]; 
     NSRange end = [myString rangeOfString:@"]"]; 
     if (start.location != NSNotFound && end.location != NSNotFound && end.location > start.location) { 
      //NSString *betweenBraces = [myString substringWithRange:NSMakeRange(start.location+1, end.location-(start.location+1))]; 
      NSRange myRange = NSMakeRange(start.location+1, end.location-(start.location+1)); 
      NSMutableAttributedString *s = 
      [[NSMutableAttributedString alloc] initWithString:myString]; 

      UIColor *powerColor = [UIColor redColor]; 
      [s addAttribute:NSForegroundColorAttributeName value:powerColor range:myRange]; 

      triggerLabel.text = [NSString stringWithFormat:@"Trigger words:%@",powerColor]; 
      triggerLabel.attributedText = s; 


     } 

    } 
+0

Вы проверили это: http://stackoverflow.com/questions/8555735/how-to-make-subscripts-and-superscripts-using-nsattributedstring? – Larme

ответ

4

Вам не нужно полагаться на специальные символы, вам просто нужно отрегулировать базовую линию секции экспоненциальной строки, чтобы она была надстрочной.

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"ten to the power of 2 = 10"]; 
NSDictionary *exponentAttributes = @{ 
    NSForegroundColorAttributeName : [UIColor redColor], 
    NSBaselineOffsetAttributeName : @(8) 
    }; 
NSAttributedString *exponentAttributedString = [[NSAttributedString alloc] initWithString:@"2" attributes:exponentAttributes]; 
[attributedString appendAttributedString:exponentAttributedString]; 
triggerLabel.attributedText = attributedString; 

Вы можете настроить это разобрать и построить строки, используя вашу предоставленную разметку - подход является важной частью. Вероятно, вы захотите также указать меньший шрифт с NSFontAttributeName.

Смежные вопросы