プライマリ文字列に 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;
}
}
ありがとうございました