在 UITableViewCell 中播放视频

2024-03-16

我正在尝试在单元格本身中播放视频,而不是全屏视频显示。我在用MPMoviePlayerController以此目的。

我已经定义了

MPMoviePlayerController *moviePlayer;

在实施部分

Then in cellForRowAtIndexPath:

我这样做

cell = [tableView dequeueReusableCellWithIdentifier:simpleTableVideoIdentifier];

            if (cell == nil){
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableVideoIdentifier];
            }
            NSDictionary *dictionary = [dataArray objectAtIndex:indexPath.section];
            NSDictionary *data = dictionary;
            if ([data[@"type_of_post"] isEqualToString:@"video"]) {
                NSString *path = data[@"video"];
                NSURL *videoURL = [NSURL URLWithString:path];
                moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
                [moviePlayer setControlStyle:MPMovieControlStyleNone];
                moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
                [moviePlayer.view setFrame:CGRectMake(10.0, 0.0, 300.0 , 400.0)];
                [cell addSubview:moviePlayer.view];
                 moviePlayer.view.hidden = NO;
                [moviePlayer prepareToPlay];
                [moviePlayer play];
            }else{
                //do something else
            }

显然我给它指定了一个高度heightForRowAtIndexPath:

但重点是MPMoviePlayerController *moviePlayer;是全局定义的,它不仅仅粘在其单元格上,而且当我向下滚动时不断向下。除了我所描述的之外,我不确定还有什么其他方法可以实现这一点,这显然不是正确的方法。如果有人能引导我走向正确的方向,我将非常感激。

Thanks


切勿向单元格添加子视图:

[cell addSubview:moviePlayer.view];

仅将其添加到 contentView:

[cell.contentView addSubview:moviePlayer.view];

您犯的另一个大错误是您忘记了该单元格可以重复使用;当用户滚动时,该单元格将用于表格的不同行。因此它被重用,现在电影播放器​​视图仍然在其中,即使现在这是表的错误行。你不仅需要add电影播放器​​视图到右侧的单元格,您需要remove它来自所有错误的细胞(在else您的代码的一部分)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 UITableViewCell 中播放视频 的相关文章

随机推荐

  • 在 Spring Boot 中使用 @TestPropertySource 覆盖 @PropertySource

    我有我的 Spring Boot 主类 SpringBootApplication PropertySource file my file properties public class Application extends Spring
  • 如何列出远程SVN存储库中的所有文件?

    我访问一个large远程 SVN 存储库 由于我通常只需要其内容的一小部分 因此我进行了 稀疏结帐 svn checkout depth empty svn ssh src 每当我需要存储库中的文件夹时 我都可以这样做 svn up fol
  • Angular 2默认选中单选按钮

    我正在尝试检查默认值为零的单选按钮 我正在尝试使用 checked true 属性 但这是行不通的
  • Swift 可重用 UITextFieldDelegate

    我正在尝试实现一个可重用的UITextFieldDelegate类如下 class CustomTextFieldDelegate NSObject UITextFieldDelegate 所有委托协议方法均已正确实现 In the con
  • Node.js:如何序列化/反序列化 React 组件?

    我想序列化一个 React 元素 给定 props 的 React 组件的实例 并在其他地方反序列化它 你为什么问 我希望能够通过标准输出从一个进程发送该类 并在另一个进程中渲染它 我还希望渲染的组件是交互式的 所以只需使用ReactDOM
  • CSS 网格布局使用 javascript 改变列宽

    我尝试设置 CSS 网格布局如下 wrapper width 800px display grid grid template columns repeat 3 200px grid template rows repeat 5 200px
  • 如何在itextsharp文档中并行设置两个表?

    How can I set two tables parallelly in a document 我的生成 pdf 的示例代码是 Document doc new Document new Rectangle 288f 144f 10 1
  • 我可以确定查询是否找不到任何值在指定范围内的子项吗?

    我能以某种方式确定是否没有孩子ref存在于之间的值 1 and newTotal 这就是我希望能起作用的 如果查询中存在子项 则回调将运行 ref orderByValue startAt 1 endAt newTotal limitToL
  • 如何在 PHP Linux 中访问 .mdb 数据源?

    我刚刚安装unixODBC为了访问我的 mdb 数据源PHP 5 3 CentOS 6 10使用这个命令 yum install unixODBC 在 Windows 中我可以简单地取消注释extension php pdo odbc dl
  • 实体框架 CTP4 代码优先:映射受保护的属性

    我想在模型上使用延迟加载集合 但我希望通过单独的方法来完成添加 删除功能 所以像这样 class Model protected virtual ICollection
  • 全局分区索引是否比非分区索引更好(更快)?

    我有兴趣了解对通常作为查询目标的数字列进行分区是否有性能优势 目前我有一个包含约 5000 万条记录的物化视图 当使用常规 B 树索引并按此数字列搜索时 我得到的成本为 7 查询结果大约需要 0 8 秒 使用非预置缓存 为该列添加全局哈希分
  • 如何设置每个组件的再磨刀设置

    我在一个代码库中工作 由于历史原因 并非所有项目都具有相同的编码约定 事实上 在一个 sln 中 我有需要不同命名约定的项目 有没有办法让 resharper 根据我正在编辑的文件所在的项目使用不同的设置 自 ReSharper 6 1 起
  • iOS7 中的警报视图显示白色矩形

    以下代码在 iOS 5 到 6 1 上完美运行 我什至有带有该代码的应用程序 void showActivityIndicator if mLoadingView mLoadingView UIAlertView alloc initWit
  • 谷歌关闭编辑器/所见即所得

    有人有使用 Google Closure Editor WYSIWYG 的经验吗 我正在考虑从 CKEDITOR 迁移到 Google Closure Editor WYSIWYG 理想情况下 我很想使用 etherpad 编辑器 但似乎没
  • ES7只由两个特性组成吗?

    根据这个博客 https webapplog com es7 es8 https webapplog com es7 es8 ES7的特点是 Array prototype includes 求幂运算符 这是正确的吗 如果是的话 为什么花了
  • 字符串值前面的“u”符号是什么意思? [复制]

    这个问题在这里已经有答案了 是的 简而言之 我想知道为什么我在我的键和值前面看到一个 u 我正在渲染一个表单 该表单具有特定标签的复选框和一个用于 IP 地址的文本字段 我正在创建一个字典 其键是硬编码在 list key 中的标签 字典的
  • ViewPager 和数据库

    数据位于数据库中 因此我通常会使用 CursorAdapter 并让它与 ListView 上的 CursorLoader 一起使用 但是现在我需要一个 ViewPager 而不是 ListView 它需要一个 PagerAdapter 而
  • Go 中的随机数组

    我尝试将以下 Python 代码翻译为 Go import random list i for i in range 1 25 random shuffle list print list 但发现我的 Go 版本又长又尴尬 因为没有 shu
  • 结合代码契约和正则表达式

    所以我有一个非常简单的类 其中一个字符串作为属性 该字符串必须具有一定的模式 我正在尝试使用代码合同来强制执行此操作 这个类看起来像这样 class SimpleClass public Property get set public Si
  • 在 UITableViewCell 中播放视频

    我正在尝试在单元格本身中播放视频 而不是全屏视频显示 我在用MPMoviePlayerController以此目的 我已经定义了 MPMoviePlayerController moviePlayer 在实施部分 Then in cellF