MPMoviePlayerController 添加 UIButton 以随控件淡出的视图

2023-12-07

我正在尝试将 UIButton 添加到MP电影播放器​​控制器以及标准控件。该按钮出现在视频上,并按预期接收触摸事件,但我希望它使用标准控件淡入和淡出,以响应用户触摸。

我知道我可以通过滚动自己的自定义播放器控件来实现这一目标,但这似乎很愚蠢,因为我只是想添加一个按钮。

EDIT

如果递归遍历视图层次结构MP电影播放器​​控制器的视图最终你会来到一个名为的视图类MP内联视频叠加。您可以轻松地向此视图添加任何附加控件,以实现自动淡入/淡出行为。

不过,有一些问题,创建后有时可能需要一段时间(根据我的经验最多一秒钟)MP电影播放器​​控制器并在完全初始化并创建它之前将其添加到视图中MP内联视频叠加层。因此我必须创建一个名为的实例变量控制视图在下面的代码中,因为有时该代码运行时它不存在。这就是为什么我有最后一段代码,如果没有找到函数,它会在 0.1 秒内再次调用自身。尽管有这种延迟,但我没有注意到界面上出现的按钮有任何延迟。

-(void)setupAdditionalControls {
    //Call after you have initialized your MPMoviePlayerController (probably viewDidLoad)
    controlView = nil;
    [self recursiveViewTraversal:movie.view counter:0];

    //check to see if we found it, if we didn't we need to do it again in 0.1 seconds
    if(controlView) {
            UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
            [controlView addSubview:backButton];
    } else {
            [self performSelector:@selector(setupAdditionalControls) withObject:nil afterDelay:0.1];
    }
}


-(void)recursiveViewTraversal:(UIView*)view counter:(int)counter {
    NSLog(@"Depth %d - %@", counter, view); //For debug
    if([view isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")]) {
            //Add any additional controls you want to have fade with the standard controls here
            controlView = view;
    } else {
            for(UIView *child in [view subviews]) {
                    [self recursiveViewTraversal:child counter:counter+1];
            }
    }
}

这不是最好的解决方案,但我将其发布,以防其他人尝试做同样的事情。如果苹果要改变控制覆盖层内部的视图结构或类名,它就会崩溃。我还假设您没有全屏播放视频(尽管您可以使用嵌入式控件全屏播放视频)。我还必须使用此处描述的技术禁用全屏按钮,因为MP内联视频叠加视图在按下时被移除并释放:iPad MPMoviePlayerController - 禁用全屏

Calling 设置附加控件当您收到上述全屏通知时,会将您的附加控件重新添加到 UI。

如果有人能提出除了我提出的这个黑客之外的其他建议,我会喜欢一个更优雅的解决方案。


我对同一问题的解决方案是:

  • 将按钮添加为MP电影播放器​​控制器's view;
  • 使用按钮的动画淡入和淡出alpha具有适当期限的财产;
  • 处理玩家控制器的touchesBegan,并使用它来切换按钮的可见性(使用其 alpha);
  • 使用计时器来确定何时再次隐藏按钮。

通过反复试验,我确定与(当前)iOS 相匹配的持续时间是:

  • 淡入:0.1s
  • 淡出:0.2s
  • 屏幕上的持续时间:5.0秒(每次触摸视图时都会延长)

当然,这仍然是脆弱的;如果内置延迟发生变化,我的延迟会看起来错误,但代码仍然会运行。

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

MPMoviePlayerController 添加 UIButton 以随控件淡出的视图 的相关文章

  • Objective-C:int值无故改变

    Objective C 我需要帮助保留 int 的值 无需我的命令 它就在我身上发生变化 最初的问题是 如何声明和保留 int 这在另一篇文章中得到了满足 Objective C 如何声明和保留 int https stackoverflo
  • ios7 navigationController PushViewController 动画错误

    看来我在 navigationController PushViewController 方法中发现了一个错误 为了重新创建它 我采用了示例主详细信息项目并对 didSelectRow method void tableView UITab
  • AVCaptureSession 具有多个方向问题

    我正在尝试实现条形码扫描仪 我有一个 AVCaptureSession 它从 AVCaptureDevice 接收视频 我想支持所有方向 使用以下代码 当我运行应用程序时 纵向一切正常 然而 在横向方向上 视图会旋转 但视频输入不会旋转 所
  • iOS 中的 CSV 逐行解析

    我正在 Objective c 中解析 CSV 文件 该文件包含如下内容 line 40 Rising searches line 41 nabi avc Breakout line 42 stonewall 700 line 43 med
  • 在 Swift 中使用 CommonCrypto 解密时出现问题

    我在一家Swift only加密 解密Extension for String and NSData 并且 crypt 部分的工作基于 Zaph 在链接问题中提供的答案 在 Swift 中使用 CCCrypt CommonCrypt 时出现
  • 防止 AlertView 被解雇

    任何人都可以帮助我防止在其按钮单击事件上解雇警报视图吗 我有一个 textview 作为我的alertView 的子视图 如果 textview 值为 nil 我不想关闭它 因为这是一个非常老的问题 但我得到了一个解决方案 并且如果其他开发
  • 使用基于约束的布局自动调整 NSTokenField 的大小

    有没有办法自动调整大小height使用约束的 NSTokenField 保持宽度恒定 sizeToFit应该有效 但事实并非如此 如果我设置一个约束来保持宽度不变并调用此方法 它将忽略约束并仅调整宽度大小 当我想要的是仅调整高度大小时 基于
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • 检索 iPhone 中的 Outlook 联系人

    我想通过应用程序导入所有 Outlook 联系人 有什么办法可以做到这一点吗 请告诉我 您可以通过实施 Microsoft Exchange 服务器协议来实现此目的 微软MSDN http msdn microsoft com en us
  • Swift 闭包作为 AnyObject

    我尝试使用这个方法 class addMethod 在 Obj c 中使用如下 class addMethod self class selector eventHandler imp implementationWithBlock han
  • 如何在 ios 7 上更改重新排序控制图像

    我正在寻找一种更改重新排序控件图像和大小的方法 我使用此代码来更改重新排序图像 void tableView UITableView tableView willDisplayCell UITableViewCell cell forRow
  • 使用超类初始化器初始化类

    我有两个类 一个是另一个的子类 比如说Animal and Dog 超类有一些初始化器 比如initAnimal 子类有一些初始化器 比如initDog 问题是 从编译器的角度来看 做类似的事情是完全合法的Dog adog Dog allo
  • iOS中的performSelector有什么用

    的作用是什么执行选择器 比较 self btnClicked and self performSelector selector btnClicked void btnClicked NSLog Method Called 两者都对我来说工
  • 玻璃效果 UIView

    我想知道如何在 UIView 上添加玻璃效果 我想像这样的效果 http pttrns com pickers detail 0dc9d9f6c6a7577613b3453768eee3b3在灰色半透明视图上 您 可以在这里看到 Thank
  • 如何检测Retina高清显示屏?

    UIScreen有一个新的 nativeScaleiOS 8 中的属性 但文档没有提及它 property nonatomic readonly CGFloat nativeScale 还有一个scale属性 但文档说它是 2 用于视网膜显
  • 适用于 Objective-C / iPhone 的良好 HTTP 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 UPDATE 这个问题显然已经过时了 参见日期 我建议只使用现代 iOS7 功能 例如 NSURLSession 我想 这个问题是为了历史
  • 避免“在此块中强烈捕获自身可能会导致保留周期”消息

    每次我必须在块内使用全局变量或属性时 如下所示 self save if isItSaving NO self saveMyFile 我必须像这样重写 BOOL iis isItSaving id myself self self save
  • 线程 1:信号 SIGABRT - AppDelegate.h

    main m Journey Created by Julian Buscema on 2014 07 13 Copyright c 2014 Julian Buscema All rights reserved import
  • 我什么时候应该对 IBOutlet 使用弱或强限定符? [复制]

    这个问题在这里已经有答案了 可能的重复 ARC 下 IBOutlets 应该强还是弱 https stackoverflow com questions 7678469 should iboutlets be strong or weak
  • 如何通过辅助功能 API 获取当前所选文本的全局屏幕坐标。

    我需要帮助来了解字典应用程序如何在任何应用程序上按 CMD CTRL D 时显示所选文本的以下弹出对话框 我想实施 我的可可应用程序具有相同的功能 我的应用程序将在后台运行 并显示有关所选文本的一些热键的建议 我已经实现了热键捕获 我只需要

随机推荐

  • 使用 iBeacon 打开应用程序

    我对 iOs 7 1 的新版本感到非常兴奋 其中对 iBeacon 进行了重大更改 如下所述 http beekn net 2014 03 apple ios 7 1 launches major ibeacon improvement 和
  • Impossible RuntimeException:带有 Robolectric 的存根

    我花了几个小时试图弄清楚这一点 我正在使用 Maven 通过 Robolectric 在 IntelliJ IDEA 中构建和测试项目 我在 POM 中的 Android 之前声明了 Robolectric 并且我已使用 SDK 部署程序安
  • 与同一模型 CakePHP 的多个关系

    嘿 我们的数据库中有三个表 它们通过帐户和发票这两个关系连接 帐户 id 发票 id sender id receiver id 关系 id sender id receiver id 发送者和接收者都是引用帐户表的外键 因此在 cakeP
  • 编译器错误“令牌前缺少二元运算符”是什么意思?

    我最近在尝试使用 gcc 编译时遇到以下错误 错误 标记 之前缺少二元运算符 Web 和 SO 搜索提出了此错误的几个具体示例 并通过特定的代码更改来修复它们 但我没有找到关于什么条件导致发出此错误的一般描述 gcc 何时以及为何发出此错误
  • git merge 仅合并最后一次提交

    我前段时间工作过一个分支 我需要合并到我的主分支中 它有几个提交 但是当我尝试合并它时 它只合并到分支上的最后一个提交中 而不合并到其他尚未合并的分支中有没有办法可以有选择地合并提交 或者有什么方法可以解决这个问题 您可以选择该提交 git
  • 如何在网页上制作所见即所得的部分?

    我想了解网络上所见即所得页面的基本原理 我开始对其进行编码并使用文本区域进行制作 但很快我意识到我无法在文本区域中添加或显示图像或任何 HTML 所以我使用 DIV 制作它 但我不明白如何使其可编辑 所以 大体上来说 我想知道如何 原则上
  • 有没有办法为 Docker 编译和静态链接 ruby​​ 库?

    2015 年 6 月 29 日更新 InfraRuby 编译器和运行时 用于 JVM 上的静态类型 Rub y 我想要一个静态链接的二进制文件 通过一个简单的 ruby 爬虫来构建一个小型的 docker 容器 类似 Go 生成的东西 CG
  • 将值从 Windows 窗体应用程序发送到 Asp.Net Core Api

    我创建了一个简单的 Asp Net Api 来在 Winforms 应用程序中显示学生的信息 但是 现在我想要创建一个 Api 它接受来自 Windows 窗体应用程序的值并将这些值插入数据库 我怎样才能创造这样的东西 这是我到目前为止所尝
  • 如何对表示为字节向量的多列进行有效排序?

    我有一个名为Dataframe这本质上是一个std vector
  • jpql order by 子查询产生意外的 AST 节点异常

    我将一个工作 postgre sql 查询翻译为 jpql 但 hibernate 抛出了一个 org hibernate hql ast QuerySyntaxException 意外的 AST 节点 例外 这些是我的核心模型类 Enti
  • 只监听文档的变化而不是一直监听

    我只想监听 firebase 中文档的更改 但现在似乎它每时每刻都在监听 尽管没有任何更改 我可以看到这一点 因为当我将其打印到控制台时 它永远不会停止 FirebaseFirestore instance collection users
  • 回调的缺陷

    From http doc qt nokia com 4 7 signalsandslots html 回调有两个根本缺陷 首先 它们不是类型安全的 我们 永远无法确定 处理函数将调用 带有正确参数的回调 有人能解释一下 在什么情况下不能确
  • ASP.net MVC - 具有可为空属性的自定义属性错误消息

    我的视图模型中有一个属性可以接受整数和可为空的值 Display Name Code Postal public int CodePostal get set 当我输入字符串值时 如何显示默认消息之外的另一条消息 The field Cod
  • 如何在angular2中使用nativescript的WebView?

    我正在尝试插入一个web view在我的页面上并收听 loadFinishedEvent 但为了做到这一点 我需要在我的中找到网络视图成分 ts文件 通过nativescript方式我需要用标签包装我的xml UI
  • 自动更新 Windows 10 IoT Core 内的应用程序?

    最近我有一个问题 如果我编写一个 UWP 应用程序并安装到具有 Windows IoT Core 操作系统的 Raspberry Pi 中 是否可以在 Raspberry Pi 内为我的应用程序设置自动 OTA 更新 就像 Windows
  • 即使设置 date_default_timezone_set 之后,PHPExcel 也会得到错误的时区

    我在用着http phpexcel codeplex com在我的一个项目中 我遇到了一个问题 我想在单元格内写入 time 值 我正在这样做 function writeTimeLine objActiveSheet lineNumber
  • CORS 和内部服务器错误响应

    在 ASP NET WebApi2 中 如果存在内部服务器错误 则会发送 500 响应withoutAccess Control Allow Origin 标头 即使CORS 已启用 这会导致浏览器报告 CORS 错误 而不是内部服务器错误
  • 在 python 3.5 中安装 scrapy 时出错[重复]

    这个问题在这里已经有答案了 我正在 Python 3 5 中安装 Scrapy 我指的是安装指南here 我已经安装了pip and conda 我尝试了指南中提到的两种方法 但收到此错误 我已经安装了pip and minoconda c
  • Python:派生类访问同一内存位置中基类的字典

    我想知道为什么在基类中定义并从派生类访问的字典显然只存在于一个内存位置 一个简短的例子 class BaseClass testdict dict testint 0 def add dict entry self self testdic
  • MPMoviePlayerController 添加 UIButton 以随控件淡出的视图

    我正在尝试将 UIButton 添加到MP电影播放器 控制器以及标准控件 该按钮出现在视频上 并按预期接收触摸事件 但我希望它使用标准控件淡入和淡出 以响应用户触摸 我知道我可以通过滚动自己的自定义播放器控件来实现这一目标 但这似乎很愚蠢