나는 많은 단어가 서로 나란히있는 UITextView
이 있습니다. 사용자가 해당 화면을 시작했을 때 나는 몇 가지 단어를 강조 시작하려면, 예를 들면 :Swift에서 UITextView에서 하나씩 단어의 스타일을 어떻게 바꿀 수 있습니까?
one two three #four five six #seven eight nine ten
eleven #twelve thirteen fourteen fifteen sixteen
some other words #example test whatever #some thing
다음 1 초 후에, 단어 four
이 (스타일을 변경합니다 :
첫 번째는 그가 보는 것은 텍스트의 벽이다 색상), 그래서 그는 볼 것입니다 :
one two three #FOUR five six #seven eight nine ten
eleven #twelve thirteen fourteen fifteen sixteen
some other words #example test whatever #some thing
다음 1 초 후에, 다른 단어가 강조 것이다 (이미 four
색 조인) :
one two three #FOUR five six #SEVEN eight nine ten
eleven #twelve thirteen fourteen fifteen sixteen
some other words #example test whatever #some thing
등등. 따라서 몇 초 후에 사용자는 다음을 볼 수 있습니다.
one two three #FOUR five six #SEVEN eight nine ten
eleven #TWELVE thirteen fourteen fifteen sixteen
some other words #EXAMPLE test whatever #SOME thing
다음 텍스트는 이와 같이 유지되어야합니다. 어떻게해야합니까?
단어를 반복하여 미리 정의 된 단어와 같은지 여부를 확인했지만 생각을하지 못했습니다. 어떻게 도와 드릴까요?
은 ===== 편집
그래서 나 자신에 대한 것들을 쉽게 내가 #
기호로 강조 단어를 표시하기로 결정하게합니다.
#
로 시작하는 모든 단어를 강조하기 위해 확장이 있습니다
extension UITextView {
func formatTextInTextView() {
self.isScrollEnabled = false
let selectedRange = self.selectedRange
let text = self.text
let font = UIFont(name: "AppleSDGothicNeo-Light", size: 16.0)
let titleDict: NSDictionary = [NSFontAttributeName: font!]
// This will give me an attributedString with the desired font
let attributedString = NSMutableAttributedString(string: text!, attributes: titleDict as! [String : AnyObject])
let regex = try? NSRegularExpression(pattern: "#(\\w+)", options: [])
let matches = regex!.matches(in: text!, options: [], range: NSMakeRange(0, (text?.characters.count)!))
for match in matches {
let matchRange = match.rangeAt(0)
let titleDict: NSDictionary = [NSForegroundColorAttributeName: orangeColor]
attributedString.addAttributes(titleDict as! [String : AnyObject], range: matchRange)
}
self.attributedText = attributedString
self.selectedRange = selectedRange
self.isScrollEnabled = true
}
}
을하지만 1 초 지연
루프에 대한 아이디어는 올바른 방향입니다. 무언가를 시도하십시오. 적어도 몇 가지 기본적인 시도를 보여주는 관련 코드로 질문을 업데이트하십시오. 도움이 필요한 것이 무엇인지 명확하게 설명하십시오. – rmaddy
@maddy, 나는 그것을 지적 해 주셔서 고마워요. – user3766930
이 코드는 사용중인 정규 표현식으로 인해 모든 단어를 한 번에 강조 표시합니다. 강조 표시하려는 단어 목록 (배열)을 작성한 다음 해당 배열을 반복하는 방법이 필요합니다. 그런 다음 각 단어에 대해 해당 단어의 모든 일치 항목을 찾습니다. – rmaddy