Unicode包括上标字符,例如“⁰¹²³⁴⁵⁶⁷⁸⁹”以及下标:“₁12 3 45 5”。我想将数字格式化为超数或下标数字 - 我认为在UILabel
或UITextField
中使用它应该没问题。
具体来说,我不想使用NSAttributedString
。
感谢。
答案 0 :(得分:0)
我在NSString上添加了一个类别,但在使用之前阅读了以下内容。
-(NSString*) asSuperscript
{
return [self tranformWithMap:
@{
@"0": @"⁰",
@"1": @"¹",
@"2": @"²",
@"3": @"³",
@"4": @"⁴",
@"5": @"⁵",
@"6": @"⁶",
@"7": @"⁷",
@"8": @"⁸",
@"9": @"⁹"
}];
}
-(NSString*) tranformWithMap: (NSDictionary *) map
{
NSString *output = self;
for (NSString *from in map.allKeys)
{
output = [output stringByReplacingOccurrencesOfString: from withString: map[from]];
}
return output;
}
上面的实现是非常低效的,但是会用于短字符串 - 嘿,计算机很快,对吗?
但是,在iOS 上,我需要这个,系统字体的上标字符看起来很糟糕。特别是“123”的字符不会与“0456789”垂直对齐,这些都是更高的!