Objective c 属性字符串中的上标美分

Objective c 属性字符串中的上标美分,objective-c,nsattributedstring,Objective C,Nsattributedstring,我试图让我的标签看起来像这样: 但使用属性字符串,我成功地得到了以下结果: 我的代码: NSString *string = [NSString stringWithFormat:@"%0.2f",ask]; NSMutableAttributedString *buyString = [[NSMutableAttributedString alloc] initWithString:string]; [buyString addAttribute:NSFontAttributeName

我试图让我的标签看起来像这样:

但使用属性字符串,我成功地得到了以下结果:

我的代码:

NSString *string = [NSString stringWithFormat:@"%0.2f",ask];

NSMutableAttributedString *buyString = [[NSMutableAttributedString alloc] initWithString:string];

[buyString addAttribute:NSFontAttributeName
                  value:[UIFont systemFontOfSize:15.0]
                  range:NSMakeRange(2, buyString.length - 2)];

self.labelBuy.attributedText = buyString;
如你所见,点后面的数字保持在下面,我想把它们放在顶部作为第一个例子。
有什么方法可以设置属性字符串帧吗?

您必须使用
NSBaselineOffsetAttributedName

从文档:

nsbaselineOffsetAttribute名称

此属性的值是
NSNumber
包含浮点值的对象,该浮点值指示 角色相对于基线的偏移,以点为单位。默认值为 0.
在iOS 7.0及更高版本中提供

从你的例子来看:

[buyString addAttribute:NSBaselineOffsetAttributeName
                  value:@(10.0)
                  range:NSMakeRange(2, buyString.length - 2)];

您可能需要更改该值以满足您的需要。

为什么不实际使用上标?您必须首先导入“CoreText/CoreText.h”


我的猜测是,您必须使用两个
UILabel
s(以及两个属性字符串),而不是一个。似乎将美分放得太高,美分的底部与整数值的顶部对齐。
    [buyString addAttribute:(NSString *)kCTSuperscriptAttributeName 
                      value:@1 
                      range:NSMakeRange(2, buyString.length - 2)];