Форматирование текста внутри UITextView

swift
xcode

#1

Собственно вот такой вопрос назрел. Есть очень большой текст, помещенный в UITextView, в каких то местах этого текста должен быть курсив или жирный шрифт, в каких-то местах цвет шрифта должен быть другим. Однако UITextView позволяет изменить вид текста только полностью. Как быть?


#2

Использовать attributed string


#3

Здесь есть пример по использованию NSAttributedString and NSMutableAttributedString


#4

Спасибо большое, с Attrubuted Sting разобрался с помощью ваших двух ответов :slightly_smiling:

Возник еще один вопрос на который Google мне не дал ответа (в основном потому, что английский у меня хромает (а может-быть и вовсе влачит свою существование без ноги :slightly_smiling:)) - в этом тексте должны быть ссылки по клику на которые пользователю будет открываться картинка (в вебе это называется pop-up), расскажите, где можно посмотреть примеры реализации?

Заранее большое спасибо.


#5

Есть очень много разных вариантов этой реализации.

  1. Возможно подгружать в этот же контроллер саму картинку и задавать ей анимацию зуму.
  2. Возможно подгружать картинку с помощью другого контроллера методом пуша. При нажатии на ссылку вас будет забрасывать на второй контроллер с картинкой.
  3. Возможно с помощью поповер-контроллера.
  4. Возможно с помощью других встроенных библиотек.

Есть и другие варианты. Это все что мне пришло сразу в голову)


#6

Хм, хорошо. Но как назначить на отдельный участок текста UITextView какой-то метод?


#7

Вот такой нашел пример. Я сейчас на работе поэтому не могу помочь в полную силу.

private let kURLString = "myapp://fakeActionUrl"

let range = NSMakeRange(0, actionString.characters.count)
mutableAttributedString.addAttribute(NSLinkAttributeName, value: kURLString, range: range)

textView.attributedText = attributedString

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
if (URL.absoluteString == kURLString) {
    // Do whatever you want here as the action to the user pressing your 'actionString'
}
return false
}

textView.linkTextAttributes = [NSForegroundColorAttributeName : UIColor.redColor(), NSUnderlineStyleAttributeName : NSUnderlineStyleSingle]

Как воспользоваться линками TTTAttributedLabel

Вот так поищите в линк