我需要为化学公式(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/