Встроенные видео YouTube в UITableViewCell: как кэшировать, чтобы предотвратить перезагрузку?

Я вставляю миниатюры видео в YouTube в свой UITableView Cell через следующий код. Однако всякий раз, когда я просматриваю таблицу, миниатюры видео будут перезагружаться, когда ячейка покидает экран и возвращается.

Каков наиболее эффективный способ кэширования эскизов, чтобы они загружались только в первый раз?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString* PlaceholderCellIdentifier = @"PlaceholderCell"; SearchResult *searchResult = [self.searchResultArray objectAtIndex:indexPath.row]; UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:PlaceholderCellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:PlaceholderCellIdentifier]autorelease]; UIWebView *videoView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 104, 104)]; videoView.tag = 1; cell.imageView.image = [UIImage imageNamed:@"Placeholder"]; [cell.contentView addSubview:videoView]; [videoView release]; } UIWebView *thisVideoView = (UIWebView *)[cell.contentView viewWithTag:1]; NSString *videoHTML = [self embedYouTube:searchResult.url frame:CGRectMake(0, 0, 104, 104)]; [thisVideoView loadHTMLString:videoHTML baseURL:nil]; return cell; } - (NSString*)embedYouTube:(NSString*)url frame:(CGRect)frame { NSString* embedHTML = @"\ <html><head>\ <style type=\"text/css\">\ body {\ background-color: transparent;\ color: white;\ }\ </style>\ </head><body style=\"margin:0\">\ <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \ width=\"%0.0f\" height=\"%0.0f\"></embed>\ </body></html>"; NSString* html = [NSString stringWithFormat:embedHTML, url, frame.size.width, frame.size.height]; return html; } 

В этих ситуациях вы можете (после первого выделения webView) связать webView с объектом в searchResultArray с объектом objc_setAssociatedObject.

Дело в том, что поскольку cellFoRowAtIndexPath вызывается каждый раз, когда ячейка становится видимой, вы не должны инициализировать веб-просмотр там, но когда вы их инициализируете, вы делаете:

 objc_setAssociatedObject([searchResultArray valueForKey:someIndex], &someKey, webView, OBJC_ASSOCIATION_RETAIN_NONATOMIC) 

а затем в cellForRowAtIndexPath вы выполните:

 if (objc_getAssociatedObject([searchResultArray valueForKey:indexPath.row, &someKey) != nil) { UIWebView *thisVideoView = (UIWebView *)[cell.contentView viewWithTag:1]; *thisVideoView = objc_getAssociatedObject([searchResultArray valueForKey:indexPath.row, &someKey); } else { ////empty webView or some loading indicator } 

Вы можете инициализировать webViews, когда будете готовы. & someKey является статическим символом и должен быть глобальным для класса.

  • Использование Gdata для получения статистики о видео
  • Приложение iOS для портретов только из UIWebview youtube в ландшафте
  • UIWebview не отображает встроенный YouTube для iOS 8
  • Недавно не играл клип YouTube с игроком iframe в UIWebView
  • используя веб-просмотр для воспроизведения видео с youtube в приложении iphone
  • Unclikable ссылка «watch on youtube» при встраивании в iOS (и Android?) Из-за перекрытия элемента <video>
  • Доля видеофайлов с YouTube и Twitter на iOS 6 и выше
  • MPMoviewPlayer вычисляет текущее время во время воспроизведения видео
  • Google API: ошибка видео uplaod на YouTube = 403
  • YouTube встраивает AirPlay UIWebView
  • Большинство видео не получают VideoUrl с YouTube
  • Interesting Posts

    AVAssetExportSession без звука (iPhone), работает на iPad

    Как управлять учетными записями производства и разработки с помощью Facebook iOS SDK

    iPhone RestKit, как загрузить локальный файл JSON и сопоставить его с основным объектом данных?

    Как указать яркий внешний вид для вторичного текста виджета Today Center?

    Создание интерактивных видео в iPad – приложение для демонстрации продукта

    Apple Push Notification Регистрация и токен устройства Получить разъяснения?

    Можно ли изменить цвет значка UITabBarItem?

    Проблемы с картой за UIView, аналогичные деталям FourSquare

    Как опубликовать на стене пользователей с помощью Facebook SDK

    Как отключить просмотр uiviewcontroller / unload при выходе из системы

    UIImageView автоматически изменяет размер

    Как изменить непрозрачность наложения за UIPopoverPresentationController?

    Проблемы с записью и воспроизведением звука одновременно

    UINavigationController с настраиваемой панелью навигации по фигуре

    Как открыть приложение ios с помощью URL?

    Давайте будем гением компьютера.