我如何扫描数字字符串来调整iOS应用程序中的字体大小?



我开了个好头。但是我想让这段代码更动态。

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)];

假设我有以下字符串:

@"C3OC2OH4"

我想调整数字的字体大小,只是为了满足化学应用。我如何扫描上面的字符串,并创建一系列自定义范围来插入上面的函数,该函数调整字体大小?

您可以枚举字符并像这样应用属性。

NSString * string = @"C3OC2OH4";
NSMutableAttributedString * attributedString = [NSMutableAttributedString new];
NSDictionary * subscriptAttributes = @{NSFontAttributeName : [UIFont systemFontOfSize:10.0],
                                       NSBaselineOffsetAttributeName : @(-5.0)};
[string enumerateSubstringsInRange:NSMakeRange(0, [string length])
                           options:NSStringEnumerationByComposedCharacterSequences
                        usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                            NSCharacterSet * letterCharacterSet = [NSCharacterSet letterCharacterSet];
                            if ([substring rangeOfCharacterFromSet:letterCharacterSet].location != NSNotFound)
                                [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:substring]];
                            else
                                [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:substring attributes:subscriptAttributes]];
                        }];

在这种情况下,substring是每个字符,如果它是一个字母,则不加任何更改。如果它是一个数字,我们改变字体大小和移动基线。

好运。

相关内容

最新更新