ios - AVPLayer + 全屏自定义播放器控件

标签 ios objective-c custom-controls fullscreen avplayer

设计:

ViewController:有一个播放器 View 和一个容器 View 。

播放器 View :加载 AVPlayer 并在播放器 View 底部有一个 subview (PlayerControlView)以加载播放器控件(播放/暂停/进度条/全屏等)

PlayerControlView:具有播放器控件布局的自定义 UIView。

我能够在正常模式(即非全屏)下加载 AVPlayer 和播放器控件。播放正常,所有控件均正常工作。

问题:

当用户点击播放器控件上的全屏图标时,我希望 AVPlayer 进入全屏。通过更改播放器 View 的框架并将 AVPlayerLayer 的 Zposition 设置为 100,我能够使 AVPlayer 进入全屏。

问题是只有当我不对 playerControlView 进行任何更新(即进度条/点击播放按钮等)时,AVPlayer 才会保持全屏。一旦 slider 上的播放进度更新完成,AVPlayer 就会退出全屏并返回正常模式。

播放器控件未重新定位到播放器 View 的底部。他们本身就留在原来的位置上。在正常模式下,播放器控件会根据方向变化正确布局。

有人可以告诉我我采用的方法是否正确吗?如果没有,请建议采用正确的设计来实现 AVPlayer 的全功能播放器控件。

提前致谢, 纳文

最佳答案

您需要在您的播放器 View Controller 中覆盖 viewWillLayoutSubviews 方法并在那里更新您的播放器 View 的框架

关于ios - AVPLayer + 全屏自定义播放器控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28860173/

相关文章:

iphone - 解压缩图像以在 UITableView 上使用

ios - 如何防止用户离开 View Controller ?

objective-c - 设计决策 : Loading an NSArray up front vs. 询问代表特定项目

objective-c - macOS开发中如何关闭新窗口?

iphone - 同时支持 iOS 6 和 iOS 5 自动旋转

ipad - 如何以编程方式使 UIView subview 固定大小

ios - 带有 NSDate 的 Unix 时间显示错误的结果

iPhone UI 库?

wpf - 当属性更改时更改自定义控件的内容模板

ios - 如何在 Swift 中创建自定义 UIControl 事件?