iOS如何使用非标准对齐方式在UILabel中绘制文本

iOS如何使用非标准对齐方式在UILabel中绘制文本,ios,objective-c,uilabel,core-text,Ios,Objective C,Uilabel,Core Text,我想把数字放在一个像图中一样对齐的标签上。标签的对齐模式都不能帮助我 小数位数应位于中心线上方和上边距之间。其他数字应以常规方式对齐。 我甚至不知道像这样的东西或任何有帮助的API的“专业”名称是什么 有人能给我指点方向或者举个例子吗 谢谢 实现它的最简单方法是使用NSAttribute字符串的NSSuperscriptAttribute属性 如果您需要更华丽的东西,我相信唯一的选择是使用2个标签,或者自定义绘图代码/核心文本使用下面的代码。我使用nsmutableAttributeStrin

我想把数字放在一个像图中一样对齐的标签上。标签的对齐模式都不能帮助我

小数位数应位于中心线上方和上边距之间。其他数字应以常规方式对齐。 我甚至不知道像这样的东西或任何有帮助的API的“专业”名称是什么

有人能给我指点方向或者举个例子吗

谢谢


实现它的最简单方法是使用NSAttribute字符串的NSSuperscriptAttribute属性


如果您需要更华丽的东西,我相信唯一的选择是使用2个标签,或者自定义绘图代码/核心文本使用下面的代码。我使用
nsmutableAttributeString
完成了这项工作

NSString *str = @"$899.00";
NSMutableAttributedString *attrString = [NSMutableAttributedString new];

NSMutableAttributedString *attrSuperScript = [[NSMutableAttributedString alloc] initWithString:str];
[attrSuperScript addAttribute:(NSString*)kCTSuperscriptAttributeName value:@"-1" range:NSMakeRange(0, [str length] - 3)];
[attrSuperScript addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue-Thin" size:28] range:NSMakeRange(0, [str length])];
[attrSuperScript addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue-Thin" size:15] range:NSMakeRange([str length] - 3, 3)];

[attrString appendAttributedString:attrSuperScript];
[attrString addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0, [str length])];

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, 200, 50)];
[label setAttributedText:attrString];
[self.view addSubview:label];
输出的示例屏幕截图:


我想你可以使用属性文本查看它,但看不到任何东西…你要查找的是上标(上标索引)或下标(下标索引)。你也可以使用约束(如果你在两个不同的标签中分隔了美元和美分)谢谢!正是我想要的,我认为
NSSuperscriptAttribute
现在不可用。请再次检查。您是对的,请使用
(NSString*)kCTSuperscriptAttributeName
,您需要先导入CoreText