2017-01-26 10 views
-1

NSStringで保持されているテキスト内の特定の単語を太字にすることが可能かどうか疑問に思っていました。 は、私は大胆にできる午前、このようNSMutableAttributedStringを使用して文字列内の場所に基づいて、文字のフォントを変更:NSString段落内の特定の単語をボールドする方法

NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:utf8String]; 

UIFont *boldFont = [UIFont boldSystemFontOfSize:18]; 
NSRange boldedRange = NSMakeRange(0, 9); 


[attrString beginEditing]; 

[attrString addAttribute:NSFontAttributeName 
        value:boldFont 
        range:boldedRange]; 

[attrString endEditing]; 

しかし、これは文字列の最初の9つの文字のフォントを変更します。 「あなたは知っていました」と「深い読み」、「質問」:

は、私が欲しいのは、彼らが文字列内で発見されなければならない太字次の単語に置くことです。これは可能ですか?実際には、私は文字列内での位置を知らないということです。私は、質問を見て、このことを示唆しているんでした

は重複しているが、私の質問はまったく同じではないとの回答が助けにはなりませんでした。私は文字列内の範囲を見つけて、それらをNSMutableAttributedStringに追加する必要があります。これは私が助けを求めているビットです。その方法を説明する回答が提供されています。

編集: 疑わしい重複とその回答は質問に答えません。この質問は、段落内の特定の単語を見つけることだけではなく、NSMutableAttributedStringを使用してそれらをフォーマットする方法もあります。以下の答えが答えです。 ありがとう!

+0

可能な複製(http://stackoverflow.com/questions/7033574/find-all-locations-of-substring-in -nsstring-not-just-first) – Kreiri

+0

これを試してみてくださいhttp://stackoverflow.com/questions/6013705/anyway-to-bold-part-of-a-nsstring – sohil

+0

@sohil、ありがとう文字列内の部分文字列の位置を使用します。 – user3079872

答えて

4

あなたが位置をサブストリングを知らないなら、あなたはあなたがNSMutableAttributedStringクラスを使用して部分文字列に変更を加えることができ、位置をサブストリングと使用の位置を見つけるためにNSRangeを使用することができます。 例:[(だけでなく、最初の)NSStringの中のサブストリングのすべての場所を検索]の

UIFont *fontForlabel1 = [UIFont fontWithName:@"Helvetica-Bold" size:14.0]; 
UIFont *fontForlabel2 = [UIFont fontWithName:@"Helvetica-Bold" size:19.0]; 
UIFont *fontForlabel3 = [UIFont fontWithName:@"Helvetica" size:12.0]; 
NSString *text = @"Do you know that or did you know that?"; 
NSRange range; 
UILabel *setlable; 
NSMutableAttributedString * attributedString= [[NSMutableAttributedString alloc] initWithString:text]; 

range = [text rangeOfString:@"Do you know"]; 
[attributedString addAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor],NSFontAttributeName:fontForlabel1} range:range]; 

range = [text rangeOfString:[@"or"]; 
[attributedString addAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:fontForlabel2} range:range]; 

range = [text rangeOfString:@"did you know that"]; 
[attributedString addAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor],NSFontAttributeName:fontForlabel3} range:range]; 

setlable.attributedText=attributedString; 
+0

@Siddeshありがとう!これは私が探していた答えです!それは素晴らしい作品です。 – user3079872

関連する問題