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

newFontDescriptormyNewAttributeには が含まれますが、返されたフォントの記述子は含まれません。

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 に答える