我有一些动态字符串,我在我的应用程序中。一个例子如下。 (??? = n1 + n2 + n3 + n4)在这个例子中,数字应该是下标。由于我知道这条信息,我手动用NSBaselineOffsetAttributeName绘制它们就好了。但是将来会有字符串,我必须动态地为某些字符串设置下标。我正在寻找一种方法来传递字符串中的下标信息,然后解析此信息,最后删除字符串的这一部分,因为它的元数据。
我该怎么做?我绝对可以要求后端的那个人把我想要的任何形状的字符串传给我。寻找建议。
感谢。
self.statement1String = [NSString stringWithFormat:@"??? = n1 + n2 + n3 + n4"];
NSInteger start = 0;
for (NSString *component in [self.statement1String componentsSeparatedByString:@" "]) {
NSRange checkRange = NSMakeRange(start, self.statement1String.length - start);
NSRange range = [self.statement1String rangeOfString:component options:0 range:checkRange];
NSLog(@"range is %@ for string %@", NSStringFromRange(range), component);
QWZTerm *term = [[QWZTerm alloc] initWithRangeValue:[NSValue valueWithRange:range]];
term.termString = [NSString stringWithFormat:@"%@",component];
[tempArray addObject:term];
start = range.location + range.length;
}
[self.statementTextStorage setAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"Source Sans Pro" size:30]
, NSBaselineOffsetAttributeName : @-10} range:NSMakeRange(7, 1)];
[self.statementTextStorage setAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"Source Sans Pro" size:30]
, NSBaselineOffsetAttributeName : @-10} range:NSMakeRange(12, 1)];
[self.statementTextStorage setAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"Source Sans Pro" size:30]
, NSBaselineOffsetAttributeName : @-10} range:NSMakeRange(17, 1)];
[self.statementTextStorage setAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"Source Sans Pro" size:30]
, NSBaselineOffsetAttributeName : @-10} range:NSMakeRange(22, 1)];