0

我正在使用 iOS 7 新字体 API。

我正在尝试将自定义属性添加到字体属性。我可以UIFontDescriptor用这个新属性生成一个,但是当我用它创建一个新字体时,自定义属性会丢失。

这是UIFont我使用的类别方法:

- (UIFont*)fontWithCustomAttribute:(id)myNewAttribute
{
    UIFontDescriptor *newFontDescriptor = 
        [self.fontDescriptor fontDescriptorByAddingAttributes:
              [NSDictionary dictionaryWithObject:myNewAttribute
                                          forKey:@"NewAttribute"]];

    return [UIFont fontWithDescriptor:newFontDescriptor size:0];
}

newFontDescriptor确实包括myNewAttribute,但不包括返回字体的描述符。

有没有办法在 a 中有自定义属性UIFontDescriptor并在创建字体时保留它们?

4

2 回答 2

0

可能没有字体与您的自定义属性匹配(在 中fontWithDescriptor:size:),因此它们会丢失,因为返回的字体没有它们。

替换时此代码可以正常工作:

[NSDictionary dictionaryWithObject:myNewAttribute
                                      forKey:@"NewAttribute"]];

例如:

@{UIFontDescriptorFamilyAttribute : @"Georgia"}

所以问题肯定出在你的自定义属性上。

于 2013-10-11T14:24:42.720 回答
0

是的,这是可能的,您可以编写自己的类别类,并在其中传递您的字符串并在类别类中编写逻辑。因此,每当您将字符串发送到类别类的方法时,它都会扩展功能,并在此基础上获得所需的输出。例如下面是在类别类中编写的代码。只需在您的控制器类中导入类别类并调用以下方法并传递您的字符串:-

-(NSString*)getFontString:(NSString*)font
    NSString *str=font;
    NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:str];
    [string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,string.length)];
    [text setEnabled:YES];
    [text setAttributedText:string];
于 2013-10-11T14:16:36.190 回答