AVPlayer 顶部绘制按钮

2023-11-21

我必须在视频顶部绘制标签或按钮relay next previous , leave comment。视频列表有它,一旦用户从表中选择一项,就需要播放,播放器播放完成后,这些按钮或标签应该出现在视频顶部

这是我的代码:

comPlayerControl = AVPlayerViewController()

if let player = comPlayerControl {

    let videoURL: String = "http://cdnapi.kaltura.com/p/11/sp/11/playManifest/entryId/"+selectedSubmission.transcodeRefId+"/format/applehttp/protocol/http/a.m3u8"
    let playerItem = AVPlayerItem(URL: NSURL(string: videoURL)! )
    commmentPlayer = AVPlayer(playerItem: playerItem)
    player.player = commmentPlayer
    player.view.frame = videoCell.frame
    player.view.sizeToFit()

    player.showsPlaybackControls = true
    NSNotificationCenter.defaultCenter().addObserver(
        self, 
        selector: #selector(CommentsTableViewController.playerDidFinishPlaying(_:)),
        name: AVPlayerItemDidPlayToEndTimeNotification, 
        object: playerItem
    )

    comPlayerControl.delegate = self
    videoCell.addSubview(player.view)
}

func playerDidFinishPlaying(note: NSNotification) {
    print("Video Finished")
    let DynamicView=UIView(frame: CGRectMake(100, 200, 100, 100))
    DynamicView.backgroundColor=UIColor.greenColor()
    DynamicView.layer.cornerRadius=25
    DynamicView.layer.borderWidth=2
    DynamicView.layer.zPosition = 1;
    comPlayerControl.view.addSubview(DynamicView)
}

像这样的要求

requirement image


您正在使用一个AVPlayerViewController,因此没有理由像 Alessandro Ornano 的答案那样访问应用程序的窗口。为什么要重新发明轮子?每一个AVPlayerViewController has a contentOverlayView属性允许您在播放器和控件之间放置视图。

首先,创建一个新的AVPlayerItem并聆听AVPlayerItemDidPlayToEndTimeNotification关于该项目的通知。将项目加载到播放器中并开始播放。

项目完成后,您指定侦听的选择器AVPlayerItemDidPlayToEndTimeNotification将调用通知。在该选择器中,访问contentOverlayView直接并添加您的按钮:

在某些视图控制器或其他对象中:

let playerVC = AVPlayerViewController()

// ...

func setupPlayer {

    let playerItem = AVPlayerItem(...)
    playerVC.player?.replaceCurrentItemWithPlayerItem(playerItem)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(VC.itemFinished), name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem)
    self.presentViewController(playerVC, animated: true) { 
        self.playerVC.player?.play()
    }
}

func itemFinished() {
    let btn = UIButton(type: .System)
    btn.addTarget(self, action: #selector(VC.buttonTapped), forControlEvents: .TouchUpInside)
    self.playerVC.contentOverlayView?.addSubview(btn)
}

func buttonTapped() {
    print("button was tapped")
    // replay/comment logic here
}

正如评论中所述(以及拒绝编辑),按钮可能无法工作contentOverlayView。有关替代解决方案,请参阅火焰兵的回答.

你也可以子类化AVPlayerViewController并在子类的实例中执行所有操作,但是 Apple警告不要这样做:

不要子类化AVPlayerViewController。不支持重写此类的方法,并且会导致未定义的行为。

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

AVPlayer 顶部绘制按钮 的相关文章

  • NSUserDefaults、Settings.bundle 和应用程序组

    我有一个有 2 个目标的应用程序 主应用程序和 Today 扩展 为了在这些目标之间共享设置 我打开了应用程序组功能 添加了一个组group myApp com然后使用NSUserDefaults在主应用程序和今日扩展中都是如此 var d
  • 设置属性文本后防止 UILabel 字体自动更改

    我发现如果我将属性文本设置为UILabel 预定义字体将更改为属性文本第一个字符的字体 例如 the font size is set to 20 in Interface Builder println theLabel font poi
  • UITableViewCell的detailTextLabel滚动时消失

    我正在使用一个字符串数组 我在其中设置detailTextLabel从 最初所有字幕都设置正确 但如果我滚动detailTextLabel消失 UITableViewCell tableView UITableView tableView
  • UIAlertController 显示延迟

    我在我的应用程序上遇到了 UIAlertController 问题 现已迁移到 iOS8 其中包含日期选择器 下面是代码 UIAlertController AlertView UIAlertController alertControll
  • 使用 ARKit 加载的 3D 文件有大小限制吗?

    我正在使用 ARKit 开发一个增强现实应用程序 我们需要在其中加载一组建筑物的 3D 模型 我计划是检测水平面并将物体放置在那里 3D 模型或检测到的平面尺寸有尺寸限制吗 如果您谈论的是文件的物理大小 我应该说每个模型的多边形数量比以 M
  • xcode 5.1 中的 ios 6.0 模拟器

    我刚刚成功将 Xcode 工具更新到 5 1 版本 当我检查首选项部分中的 下载 选项时 我注意到没有下载 ios 6 0 模拟器的选项 请检查附图 那么如何在Xcode 5 1中访问ios 6 0模拟器呢 请按照此程序升级您的 xCode
  • 填充 UIScrollView 的垂直空间

    我正在研究一个具有UIScrollView 我想要做的是将标签固定在可滚动区域的顶部 并将按钮固定在底部 两者之间的空间最小 这个想法是 如果标签的高度增加 按钮将被向下推 以便用户必须向下滚动才能找到它 但是 如果标签很短 则标签和按钮之
  • 运行 pod install 时出错 - 在目标“Runner”上自动分配版本“8.0”的平台“iOS”

    你好 我无法用 Cocoapods 解决这个问题 任何人都可以帮助我 这是我第一次使用这个导入 导入 包 flutter vlc player flutter vlc player Dart 而不是可能出什么问题 我在mac上使用andro
  • 找不到 -lAFNetworking Xcode 问题的库

    ld warning directory not found for option L Users kh Library Developer Xcode DerivedData om euxqzibzllbcmndwqrgthdeotiro
  • 在 Swift 3 中以编程方式创建没有 XIB 的 NSViewController

    我正在尝试在不使用 Interface Builder 的情况下制作 macOS 应用程序 我的项目已构建并运行 但我的主视图控制器似乎没有加载其视图 那就是viewDidLoad 方法未被调用 我正在使用 Xcode beta 8 0 b
  • MFMailcomposeviewcontroller 发送按钮被禁用

    有没有人遇到这样的问题MFMailcomposeviewcontroller发送按钮被禁用 变灰 取消按钮工作得很好 这似乎是一个新错误 如果本机邮件应用程序从 iPhone 中删除 从 iOS 10 开始允许 则可能会发生这种情况 在这种
  • 如何将 Swift 字符串传递给 C 函数?

    我在将字符串从 swift 传递到用 c 编写的函数时遇到严重问题 我正在尝试在我的快速代码中执行此操作 var address 192 168 1 2 var port 8888 initSocket address port c 函数如
  • iOS 5 中的新错误:WebKit 丢弃了未捕获的异常

    我正在尝试加载一个UIWebView与 Facebook OAuth 授权 URL 我使用以下代码 当我的UIWebView加载 Facebook 登录页面 我输入我的凭据 然后按 登录 按钮 当我点击按钮时 我收到以下错误 WebKit
  • 外观代理 - iOS 5 的 setShadowImage 替代品?

    您好 我正在使用此代码来设置导航栏的阴影图像 if self navigationController navigationBar respondsToSelector selector shadowImage UINavigationBa
  • EKEvent接受邀请

    你如何接受EKEventiOS 中的邀请 我知道这有可能梦幻般的 日历 5和其他日历应用程序具有此功能 但我没有看到公开的非只读属性来更改用户有关事件的状态 知道如何做到这一点吗 Thanks 事实证明 经过更多研究后 所有这些应用程序都只
  • 如果在系统设置中关闭隐藏式字幕,则不会显示字幕

    我正在尝试显示字幕 无论设备在辅助功能下设置了什么 目前 如果设备设置为英语并在设置中启用隐藏式字幕 则将播放英语字幕 如果设备设置为西班牙语 则将播放西班牙语字幕 我希望无论隐藏式字幕是否打开 都能播放字幕 我尝试添加这段代码 https
  • 在 Swift 中的类扩展函数中使用“self”

    我希望能够从 Nib 中提取 UIView 子类的实例 我希望能够调用 MyCustomView instantiateFromNib 并拥有 MyCustomView 的实例 我几乎准备好通过桥接标头移植我所拥有的工作 Objective
  • 修剪 UIImage 边框

    这是我想要修剪的图像的示例 我想去掉图像周围的边框 在本例中是顶部和底部的黑条 我在Github上找到了一个库 CKImageAdditions https github com cmkilger CKImageAdditions 但是它似
  • 使用react-native使用WebView设置用户代理

    我想修改 WebView 中的用户代理字符串 以便在服务器端我可以检测到请求来自我的反应本机应用程序 我想使用 WebView 中的 source 属性来做到这一点 对于 IOS 和 Android 我该如何执行此操作 您只需将其设置为 W
  • UITableView 干扰状态栏

    我正在开发一个具有 UITableViewController 的应用程序 该应用程序显示值列表 如下所示 如何将表格向下移动 使其不会与状态栏冲突 看来我无法对这个场景施加任何限制 所以我不知所措 使用以下 3 个属性UIViewCont

随机推荐

  • iPhone 模拟器/Mac OS 10.8.4 上的简单应用程序崩溃

    今天早上 将 Mac 上的 Mac OS 更新到 10 8 4 后 我在 Xcode 4 6 2 上编写了一些代码 然后按 运行 按钮进行编译 你知道 我没有停止模拟器 只需按 运行 按钮即可编译并运行 然后 应用程序崩溃了 我尝试了其他一
  • ASP.NET Core 在 Web API 中处理自定义响应/输出格式的方法

    我想创建自定义 JSON 格式 它将响应包装在数据中并返回 Content Type 例如 vnd myapi json 目前 我已经创建了一个包装类 我在控制器中返回它 但如果可以在后台处理它会更好 public class ApiRes
  • 建立一个数据库来跟踪哪些用户点击了哪些链接?

    我将尝试进一步详细说明我的问题 我最近在我的大学获得了一个入门级兼职开发人员职位 以努力提高我的开发技能 虽然我过去使用过 MySQL 但只是在一门课程中简要介绍了它 因为我主要是前端人员 HTML CSS JS 不管怎样 雇用我的部门有一
  • 如何保护我的进程不被杀死?

    我们在 Linux 之上有一个关键任务服务器程序 我们不希望其他人意外终止它 如果有人终止它或它崩溃 我们希望它重新启动 所以我们计划编写另一个程序 比如说程序B 我们希望程序B和服务器程序能够互相保护 如果我们的服务器程序退出 程序B将重
  • 在 Go 中向特定客户端发送 Websocket 消息(使用 Gorilla)

    我对 Go 很陌生 并且发现自己使用套接字作为我的第一个项目 这是一个多余的问题 但我无法理解如何 将 websocket 更新发送到 Go 中的特定客户端 使用 Gorilla 我试图解决的主要问题是 使用 websockets 和 ES
  • 停止 Jenkins 工作以防新工作开始

    是否可以指定 如果作业 A 被触发多次 则先前的作业将从队列中删除 并且只有最新的作业留在队列中或在有足够的空闲槽位时启动 提前致谢 use execute system groovy script step import hudson m
  • Python 通过写入 stdin 取消 raw_input/input?

    首先 我使用的是 python 2 7 5 和 Windows x64 我的应用程序针对的是这些参数 我需要一种方法来在一段时间过去后取消 raw input 目前 我的主线程启动两个子线程 一个是计时器 threading Timer 另
  • PyCharm 中的“未指定可执行文件”错误

    当我尝试在 PyCharm 中运行 python 脚本时 收到以下错误消息 error running myscript Executable is not specified 并且脚本不运行 如何通过 PyCharm 运行我的脚本 您需要
  • 如何将 PIL 图像对象上传到 Discord 聊天而不保存图像?

    我正在尝试将 PIL 图像对象发送到不和谐聊天 但我不想保存文件 我有一个函数可以从互联网收集图像 将它们垂直连接在一起 然后返回一个 PIL Image 对象 下面的代码从我本地计算机上的 PIL Image 对象创建一个文件图像 然后将
  • 使用 AWS API Gateway 请求验证器时启用 CORS

    我成功地使用 CORS 设置了 AWS API Gateway 当请求有效时 我有一个 200 状态代码和 CORS 标头 这很好 但是 当 AWS API Gateway 请求验证器检测到无效输入时 状态代码为 400 但未发送 CORS
  • Spring Data Rest 将自定义端点添加到特定存储库

    我想将自定义搜索端点添加到我现有的用户存储库 我的用户存储库如下所示 RepositoryRestResource collectionResourceRel users path users public interface UserRe
  • 在 Patchwork 中手动定位图例

    我想将图例 所有绘图共有 放置在拼凑布局的空白区域中 从我在网上可以找到的内容来看 我无法使用手动定位图例legend position如果我也使用guides collect 但可以使用左 右等 我尝试过使用l lt get legend
  • 如何查询内存中的一个DataTable来填充另一个数据表

    我正在尝试更新 Microsoft 报告 它的作用是写出有多少客户被排除在转换过程之外以及原因 目前 该程序将所有已删除的客户端写回到服务器 然后查询它以将结果填充到特殊表中 这是当前的查询 SELECT DeletedClients Re
  • 不同级别logback不同文件

    我的 logback xml 中有这个附加程序
  • 为什么我收到错误无法等待“void”?

    private Queue
  • 一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性[重复]

    这个问题在这里已经有答案了 我在使用代码优先方法为数据库播种时遇到此错误 一个或多个实体的验证失败 有关更多详细信息 请参阅 EntityValidationErrors 属性 说实话我不知道如何检查验证错误的内容 Visual Studi
  • 双向多对多关系中的循环引用

    我的实体中存在双向多对多关系 请参阅下面的示例 public class Collaboration JsonManagedReference COLLABORATION TAG private Set
  • Meteor 通过邮件查询其他用户

    我正在尝试使用以下命令通过电子邮件查询用户Meteor users findOne emails address email protected 它在 mongo shell 中工作 但在 Meteor 中返回未定义 有任何想法吗 UPDA
  • 固定元素在 Chrome 中消失

    当在我构建的网站上滚动时 使用 CSS 属性position fixed按预期工作 将导航栏保留在页面的最顶部 然而 在 Chrome 中 如果您使用导航栏中的链接 有时消失 通常 您单击的项目仍然可见 但并非总是如此 有时整个事情都会消失
  • AVPlayer 顶部绘制按钮

    我必须在视频顶部绘制标签或按钮relay next previous leave comment 视频列表有它 一旦用户从表中选择一项 就需要播放 播放器播放完成后 这些按钮或标签应该出现在视频顶部 这是我的代码 comPlayerCont