3

我需要将以下字符‡, †, *作为上标附加到NSStringin iOS。需要你的帮助。我使用以下http://en.wikipedia.org/wiki/General_Punctuation_(Unicode_block)链接,但它们附加到NSString,但我希望它们作为上标

4

4 回答 4

11

尝试使用这个。你需要 #import <CoreText/CTStringAttributes.h>。此代码仅适用于 iOS6 或更高版本。

UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 200, 40)];
NSString *infoString=@"X2 and H20 A‡ B† C*";

NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:infoString];

[attString addAttribute:(NSString *)kCTSuperscriptAttributeName value:@1 range:NSMakeRange(1, 1)];
[attString addAttribute:(NSString *)kCTSuperscriptAttributeName value:@-1 range:NSMakeRange(8, 1)];
[attString addAttribute:(NSString *)kCTSuperscriptAttributeName value:@1 range:NSMakeRange(12, 1)];
[attString addAttribute:(NSString *)kCTSuperscriptAttributeName value:@1 range:NSMakeRange(15, 1)];
[attString addAttribute:(NSString *)kCTSuperscriptAttributeName value:@1 range:NSMakeRange(18, 1)];

lbl.attributedText = attString;

[self.view addSubview:lbl];

输出

在此处输入图像描述

我希望这能帮到您

于 2013-05-23T07:32:35.903 回答
2

NSString不允许您格式化文本的特定部分。如果您打算在 、 或 中显示您的文本UILabelUITextField并且UITextView您的应用程序不必在 iOS 6 以下的任何设备上运行),您可以使用NSAttributedString并应用kCTSuperscriptAttributeName具有值的属性@1。如果您使用的是UIWebView,请使用 HTML 的<sup>元素。

于 2013-05-23T07:17:53.937 回答
0

这就是您可以实现的方法:

NSString *string = @"abcdefghi";

NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string];

NSInteger num1 = 1;
CFNumberRef num2 = CFNumberCreate(NULL, kCFNumberNSIntegerType, &num1);

[attrString addAttribute:(id)kCTSuperscriptAttributeName value:(id)CFBridgingRelease(num2) range:NSMakeRange(6, 3)];

self.label.attributedText = attrString;

,其中 label 是已添加到 UI 的 UILabel 属性。

确保首先添加 CoreText 框架,还要在 .m 文件的顶部添加这一行。

希望它能以某种方式帮助你

于 2013-05-23T07:31:10.097 回答
0

迅速

步骤1。

    import CoreText

第2步。

    let range1 = NSMakeRange(1, 1)
    let range2 = NSMakeRange(5, 1)

    let mutableStr : NSMutableAttributedString = NSMutableAttributedString(string: "h20 x2")
    mutableStr.addAttribute(kCTSuperscriptAttributeName as String, value:-1, range: range1)
    mutableStr.addAttribute(kCTSuperscriptAttributeName as String, value:1, range: range2)

    self.lbl.attributedText = mutableStr

输出:

在此处输入图像描述

于 2017-03-29T10:26:05.567 回答