通过执行以下操作,我已经能够成功地在我的应用程序中下标数字:
static const unichar kSubscriptZero = 0x2080;
int numberOfHydrogens = 2;
NSString *header1 = [NSString stringWithFormat:@"H%CO",
kSubscriptZero + numberOfHydrogens];
问题是这样的:我尝试对可以在 unicode 字符中找到的其他字符执行相同的操作,但它不起作用,我得到的只是一个方形框而不是我的字符,结果这意味着我的字符中没有字形该字符的字体。我查看了之前提出的问题Here,并尝试了除数字以外的其他字符:
if (section == whicheverSectionIndexIsCorrect) {
NSString *plainText = @"2H2 + O2 → 2H2O";
id subscriptOffset = @(-0.5); // random guess here, adjust offset as needed
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:plainText];
// apply attributes for each character to subscript
[text addAttribute:(NSString *)kCTSuperscriptAttributeName
value:subscriptOffset
range:NSMakeRange(2, 1)];
[text addAttribute:(NSString *)kCTSuperscriptAttributeName
value:subscriptOffset
range:NSMakeRange(7, 1)];
// etc.
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 64)];
UILabel *label = [[UILabel alloc] init];
label.attributedText = text;
[view addSubview:label];
return view;
}
但我的问题是:如果我更改其中的小数位数,subscriptOffset
它根本没有效果(所以 -0.1 给我的结果与 -0.9 相同)但是当我将该数字从 1.0 更改为 2.0 等等......我的问题是不是跳得太大了。我该如何解决这个问题并获得我想要的漂亮下标外观?
更新以下是我目前情况的截图:我需要能够下标“t”