1

通过执行以下操作,我已经能够成功地在我的应用程序中下标数字:

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” 在此处输入图像描述

4

0 回答 0