2013-04-06 2 views
1

지난 며칠 동안 iOS에서 여러 텍스트 조각을 강조 표시하기 위해 적합한 솔루션을 찾고있었습니다. 일반적인 아이디어는 Amazon의 Kindle 응용 프로그램에서 텍스트 강조가 작동하는 것과 유사합니다.iOS에서 여러 텍스트 조각을 강조 표시하는 방법은 무엇입니까?

나는 UITextViewUIWebView으로 실험했지만 사용 성과 성능 측면에서 올바른 해결책을 찾지 못했습니다.

아이디어가 간단합니다. 사용자가 문장을 탭하면 문장이 강조 표시됩니다. 다른 문장을 두드리면 그 문장도 강조 표시됩니다. 텍스트를 강조 표시하기위한 내장 솔루션은 이러한 목적에 적합하지 않습니다. 해결책의 중요한 측면은 iOS 6 이후 UITextView에서 가능한 텍스트 스타일을 지정해야한다는 것입니다.

제 질문은 이러한 유형의 기능을 구현하기위한 실용적인 접근 방식은 무엇입니까? 내가 설명하는 것을 수행하는 오픈 소스 솔루션이 있습니까?

답변

1

여러 줄로 된 UILabels의 NSAttributedString을 제안합니다. iOS 6에서 시작 UILabels는 기본적으로 속성 문자열을 수정하지 않고 지원합니다.

NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"Some text and some more %@", dynamicString]]; 

//Change background color to highlight a sentence, by giving sentence's range 
[str addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(sentenceStartIndex, sentenceLength)]; 

[label setAttributedText:str]; 

편집 : 그것은 UITextViews도 나는 그것을 시도하지 않았다 NSAttributedString은을 지원 밝혀, 그래서 당신은 UITextViews와 UILabels를 대체 할 수 있습니다.

+0

나의 주된 질문은 'NSAttributedString'에 대한 지원이 아니라 여러 텍스트 조각을 강조 표시하는 기능을 구현하는 방법입니다. 이 질문에서 언급 한 것처럼 UILabel과 UITextView는 iOS 6 이후 NSAttributedString을 지원한다는 것을 알고 있습니다. –

0

Matt Thompson의 TTTAttributedLabel을 사용하는 것이 좋습니다. 그것은 속성 문자열을 지원하고, iOS 4로 다시 돌아가며 작동하며, MIT 라이센스가 부여됩니다.

+0

프로젝트의 배포 대상은 iOS 6이므로 UILabel 및 UITextView를 사용할 수 있습니다. 주요 질문은 여러 텍스트 조각을 강조 표시하는 기능을 구현하는 방법입니다. –

+0

그럴 경우 guenis의 대답은 괜찮을 것입니다. 단지 각각 다른 범위의 여러 속성을 추가하십시오. – jhabbott