objective-c - 如何使用 NSAttributedString 制作下标和上标?

标签 objective-c nsstring nsattributedstring

我需要为化学公式(H2O、Na^2+ 等)制作下标?

这是否可以与 NSAttributedString 一起使用,或者是否有其他/更简单的方法来制作下标?

最佳答案

这是我在 iOS 6 中所做的。首先添加 CoreText 和 QuartzCore 框架。然后导入:

#import <QuartzCore/QuartzCore.h>
#import <CoreText/CTStringAttributes.h>
#import <CoreText/CoreText.h>

我做了一个小函数,它输入一个普通的 NSString 并导出一个 NSMutableAttributedString,最后一个字符在上标中。这可以修改为允许设置上标或下标,将 kCTSuperscriptAttributeName 值更改为 -1。您也可以添加一个变量来指定将上标放在字符串中的位置。现在它只是假定字符串的结尾。

- (NSMutableAttributedString *)plainStringToAttributedUnits:(NSString *)string;
{
    NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:string];
    UIFont *font = [UIFont systemFontOfSize:10.0f];
    UIFont *smallFont = [UIFont systemFontOfSize:9.0f];

    [attString beginEditing];
    [attString addAttribute:NSFontAttributeName value:(font) range:NSMakeRange(0, string.length - 2)];
    [attString addAttribute:NSFontAttributeName value:(smallFont) range:NSMakeRange(string.length - 1, 1)];
    [attString addAttribute:(NSString*)kCTSuperscriptAttributeName value:@"1" range:NSMakeRange(string.length - 1, 1)];
    [attString addAttribute:(NSString*)kCTForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, string.length - 1)];
    [attString endEditing];
    return attString;
}

现在,当我想使用它时,我可以执行以下操作将其放入 UITextField 中:

    NSString *qlwUnitsPlainText = @"m3";
    self.quantityLoadWeightUnits_textField.attributedText = [self plainStringToAttributedUnits:qlwUnitsPlainText];

我希望这对其他人有帮助,那里的例子不多!

关于objective-c - 如何使用 NSAttributedString 制作下标和上标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8555735/

相关文章:

objective-c - strftime %e 个位数天数之前没有空白?

objective-c - 使用最新的 xcode/OSX 版本构建项目时出现奇怪的应用程序行为

ios - 从 NSData 转换为 NSString 后更改了字符串信息

objective-c - 检查并从没有索引的 nsmutable 数组中删除特定字符串

html - Swift:在标签或 TextView 中显示 HTML 数据

swift - 使用 Swift 将 NSAttributedString 转换为 NSString

iphone - 如何在 sqlite 中创建时间戳字段,以便正确初始化具有 NSDate 字段的核心数据对象?

objective-c - CSV 文件查找 - Objective C

ios - NSString stringWithFormat 不适用于货币符号等特殊字符

ios - NSAttributedString绘图-多少行?