Найти тему
Блог разработчика

YouTube iframe в UITextView (Swift & Objective-C)

Случается, что при парсинге страниц сайта или получении JSON ответа от сервера попадаются embed'ы с YouTube видео. Естественно, они не могут быть отображены, так как UITextView не поддерживает iframe.

Источник: https://unsplash.com/
Источник: https://unsplash.com/

Как же сделать так, чтобы они отображались в 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];
Картинка видео канала "Чудо Техники" в UITextView из iframe
Картинка видео канала "Чудо Техники" в UITextView из iframe

На ней закреплена ссылка на видео. Обработаем нажатие на нее вот так

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.

-3

В моих проектах по клику открывается специальный ViewController для YouTube видео, в который подгружается описание, просмотры, лайки и комментарии. Суть вы уловили? Дальше лучше вам разобраться самим =)

Понадобилось - поставь лайк! Есть решение получше? Комментарии всегда открыты для обсуждения)

Читайте также:

-4