2017-01-26 1 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

의 사용 가능한 복제 [(단지 첫번째)는 NSString에서 문자열의 모든 위치 찾기 (http://stackoverflow.com/questions/7033574/find-all-locations-of-substring-in -nsstring-not-just-first) – Kreiri

+0

시도해주세요. http://stackoverflow.com/questions/6013705/any-way-to-bold-part-of-a-nsstring – sohil

+0

@sohil, 감사합니다. 나는 이미 그 질문을 시도해 보았습니다. 문자열 내에서 부분 문자열의 위치를 ​​사용합니다. – user3079872

답변

4

하위 문자열 위치를 모르는 경우 NSRange를 사용하여 하위 문자열의 위치를 ​​찾고 위치를 사용하면 NSMutableAttributedString 클래스를 사용하여 부분 문자열을 변경할 수 있습니다. 예 :

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

@ 시드 데 감사합니다! 이것은 내가 찾고 있었던 대답이다! 그것은 위대한 작품. – user3079872

관련 문제