我有一个好的开始。但我想使这段代码更具动态性。

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是每个字符,并且如果是字母,则不作任何更改地附加在后面。如果是数字,我们将更改字体大小并移动基线。根据您的需要进行更改。

祝好运。

关于ios - 如何在数字的字符串中扫描以调整iOS应用程序中的字体大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24717835/

10-17 01:50