我看到NSAttributedString具有用于标特定属性,但我不能找到一个为下标。什么是使用NSAttributedString创建一个标字符一般的做法?

实施例:H 2 O

有帮助吗?

解决方案

尝试NSSuperscriptAttributeName具有负值。

否则,硬盘的方式将是在字符串中替换[0123456789]与[₀₁₂₃₄₅₆₇₈₉]字符。

其他提示

我在NSMutableAttributedString标/上标挣扎了一段时间,因为最基本的解决方案要求输入NSRange为每要标每一个字符。肯定有做事情的更自动化的方式?

恩,是有,但它需要的工作一点点。

我的方法是指示哪些随后信息上应进行什么类型的字体调整被下标,上标,斜体等在由NSString的包围文本与%符号被改变的字符,例如“在第二粒子的力由F-标-B给出”将在我的方案被写入@

“在第二粒子的力为f%SB%给出”

我然后使用便利方法:

NSArray *substrings = [string componentsSeparatedByString:@"%"];

砍串入由%的迹象,例如分隔子串

@ “你好%Bhow是%吗?” - >含有该数组元素:@ “你好”,@ “&Bhow是”,@ “?你”

我然后检查阵列的每个元件的第一个字符,以查看它是否包含一个与标记,我使用以表示下一个字符将或者B =粗体,S =标,I =斜体等

因此,在上文中,子串@示例中的“&Bhow是”意在被转换成粗体字符串“如何是”和输入@“你好%Bhow是%你?”旨在转变为 “Hello 如何吗?”。

字体修改的所有使用NSMutableAttributedString及其相关联的方法进行,最后所有的NSMutableAttributedString子串可以回到一起使用诸如“appendAttributedString”方法被粘贴。

如果任何人的兴趣,我的代码如下:

-(void) appendFontString:(NSMutableAttributedString*) attribString
                         :(NSString*) string{
    NSArray *substrings = [string componentsSeparatedByString:@"%"];
    for(int i=0;i<(int) [substrings count];i++){
        if([substrings[i] length]>0){
        NSString* firstCharacter=[substrings[i] substringToIndex:1];

        if([firstCharacter isEqualToString:@"&"]){
            NSString* fontType=[substrings[i] substringWithRange:NSMakeRange(1, 1)];

            //remove first two characters
            NSString* newSubString=[substrings[i] substringFromIndex:2];
            if([fontType isEqualToString:@"S"]){
            [self appendWithSuperscript:attribString :newSubString];
            } else if([fontType isEqualToString:@"s"]){
                [self appendWithSubscript:attribString :newSubString];
            } else if([fontType isEqualToString:@"B"]){
                [self appendWithBold:attribString :newSubString];
            } else if([fontType isEqualToString:@"I"]){
                [self appendWithItalics:attribString :newSubString];
            }
            } else{
            //regular string
            [self append:attribString :substrings[i]];
        }
        }
    }

}

其中appendWithBold等等方法,其转换的NSString成格式化的黑体/上标/下标/等用户创建的方法。 NSMutableAttributedString然后将其附加到可变“attribString”。

矿可能不是最好的方法,但它至少证明用一些工作可以自动和下标可可superscripting。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top