0

CoreTextライブラリを使用してテキストをフォーマットするアプリがあります。以下を使用してスタイル設定を設定します。

- (void) setAttributes
{
    CTTextAlignment alignment = self.alignment;
    CGFloat spacing = self.spacing;

    CTParagraphStyleSetting paragraphSettings[] =  
    {
        {kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &alignment}, 
        {kCTParagraphStyleSpecifierLineSpacing, sizeof(CGFloat), &spacing},
    };

    CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(paragraphSettings, 2);
    [self.text addAttribute:(NSString*)kCTParagraphStyleAttributeName value:(id)paragraphStyle range:NSMakeRange(0, [self.text.mutableString length])];
}

次に、段落スタイル設定を追加する必要があるいくつかの異なる機能を持つサブクラスがあります。

- (void) setAttributes
{
    [super setAttributes];
    CGFloat firstLineHeadIndent = 11, headIndent = 11, tailIndent = -11, paragraphSpacing = 0, paragraphSpacingBefore = 0;

    CTParagraphStyleSetting paragraphSettings2[] =  
    {
        {kCTParagraphStyleSpecifierFirstLineHeadIndent, sizeof(CGFloat), &firstLineHeadIndent},
        {kCTParagraphStyleSpecifierHeadIndent, sizeof(CGFloat), &headIndent},
        {kCTParagraphStyleSpecifierTailIndent, sizeof(CGFloat), &tailIndent},
        {kCTParagraphStyleSpecifierParagraphSpacing, sizeof(CGFloat), &paragraphSpacing},
        {kCTParagraphStyleSpecifierParagraphSpacingBefore, sizeof(CGFloat), &paragraphSpacingBefore}
    };

    CTParagraphStyleRef paragraphStyle2 = CTParagraphStyleCreate(paragraphSettings2, 5);
    [self.text addAttribute:(NSString*)kCTParagraphStyleAttributeName value:(id)paragraphStyle2 range:NSMakeRange(0, [self.text.mutableString length])];
}

これの問題は、2 番目のセットがCTParagraphStyleSetting's最初のセットを上書きしているため、機能しないことです。これを行う正しい方法は何でしょうか。私は多くのことを試し、paragraphStyles個別に行い、属性を個別に に追加しましたがattributedString、何も機能しません。

4

1 に答える 1

1

super を呼び出すと、段落スタイルの設定が既に属性として設定されています。同じ属性を再度取得し、それらの設定で新しい段落スタイルを構築し、必要に応じて新しい値で設定の一部を上書きし、最後にこの新しい段落スタイルを属性として設定します。

于 2012-08-06T11:32:18.220 に答える