1

プライマリ文字列に Nsattributestring のセットを設定しようとしています。状況は次のとおりです。

たとえば、次のような 3 つの文字列があります。

card1.contents = @"■■"; 
card2.contents = @"▲▲▲";
card3.contents = @"■■■";

最後の文字列は次のようになります。

matchingString = @"Matched 3 card: ▲▲▲&■■■&▲▲▲ for 80 points"

matchingString 値はラベル内にあります。私は、matchingString で部分文字列の範囲を見つけようとし、部分文字列をエッチングするために NsAttributeString を追加します。

私はラベルに属性を追加するためにループ内でこのコードを使用しています:

 [self addLableAttributes:@{NSForegroundColorAttributeName: [SetCardGameViewController getUIColorFromColorCard:card.color alphavalue:1],
                 NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)} range:[[self.matchedResulLabel.attributedText string] rangeOfString:card.contents]];

このコードは機能しません。ラベルからテキストを印刷すると、属性がありません。変更しようとしました

[[self.matchedResulLabel.attributedText string] rangeOfString:card.contents]

range:[[self.matchedResulLabel.attributedText string] rangeOfString:self.matchedResulLabel.text]

この場合、正常に動作しますが、必要なものではありません。だから私は問題が範囲にあると思いますが、うまくいきませんでした。

これは addLableAttributes メソッドのコードです。

    - (void)addLableAttributes:(NSDictionary *)attributes range:(NSRange)range
{
    if (range.location != NSNotFound) {
        NSMutableAttributedString *mat = [self.matchedResulLabel.attributedText mutableCopy];
        [mat addAttributes:attributes range:range];
        self.matchedResulLabel.attributedText = mat;
    }
}

ありがとうございました

4

1 に答える 1

0

card.contents に値があるかどうかを確認したい場合や、次のことを試してみたい場合があります。

range:NSMakeRange(0, [shape length])
于 2014-08-06T07:47:23.957 に答える