Случается, что при парсинге страниц сайта или получении JSON ответа от сервера попадаются embed'ы с YouTube видео. Естественно, они не могут быть отображены, так как UITextView не поддерживает iframe.
Как же сделать так, чтобы они отображались в UITextView с другим HTML контентом, и их возможно было посмотреть? Достаточно создать новый Swift класс и добавить в него этот простой и незамысловатый код:
Остается только скормить ему имеющуюся html строку:
Swift:
self.formatString(text: "htmlText", with: self.view.frame.width)
Objective-C (нужно выносить в swiftClass):
#import "ProjectName-Swift.h"
[swiftClass formatStringWithText:string with: width];
На ней закреплена ссылка на видео. Обработаем нажатие на нее вот так
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
UIApplication.shared.open(URL, options: [:], completionHandler: nil)
return true
}
Не забудьте добавить UITextViewDelegate и textView.delegate = self
При нажатии на картинку видео откроется в Safari.
В моих проектах по клику открывается специальный ViewController для YouTube видео, в который подгружается описание, просмотры, лайки и комментарии. Суть вы уловили? Дальше лучше вам разобраться самим =)
Понадобилось - поставь лайк! Есть решение получше? Комментарии всегда открыты для обсуждения)
Читайте также: