【问题标题】:addAttribute to nsstring which represent "to the power of.."addAttribute 到 nsstring 代表“...的力量”
【发布时间】:2013-11-24 19:38:02
【问题描述】:

以下代码将字符串 @"10 的 2 次方 = 10[2]" 并将红色设置为数字 2

问:我想要这个(花哨的)效果:

(请注意,我正在寻找一种通用效果,它代表一个小的、略高于行号的行号 - 就在一个字符串之后,不一定是“...的力量”,但它应该看起来像上图):

-(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;


        }

    }

【问题讨论】:

标签: objective-c nsstring core-text addattribute


【解决方案1】:

你不需要依赖特殊字符,你只需要调整字符串指数部分的基线,使其上标。

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 指定较小的字体。

【讨论】:

  • 好小子大卫。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多