添加覆盖按钮到tvOS AVPlayerViewController

时间:2017-06-02 22:10:51

标签: ios swift tvos

当我按下暂停时,我试图构建一个出现在AVPlayer上的叠加层。我遇到的问题是虽然我可以很好地覆盖按钮,但我无法在tvOS中获得焦点引擎以专注于它们......我非常确定这是作为播放器框架发生的抢夺焦点(它的全屏@ 1080p),我无法专注于其框架内的物体。

我正在做的伪代码:

{{1}}

我想要的是能够按下暂停,然后向上滑动以聚焦按钮而不是搜索条,然后在需要时向下滑动到搜索栏。很像tvOS附带的Apple Music应用程序。

感谢。

2 个答案:

答案 0 :(得分:0)

我的解决方案是覆盖preferredFocusEnvironment并向父VC添加一些侦听器,以便在采取某些操作时更改条件...不完美但足够好。

override var preferredFocusEnvironment {
    if self.someCondition {
        return [self.button]
    }
    else {
        return [self.playerController.view]
    }
}

答案 1 :(得分:0)

您可以将所需的带有操作项的自定义vc设置为您的var customOverlayViewController: UIViewController? { get set }实例的AVPlayerViewController。 (可从 tvOS 13 获得)

官方文档指出:

隐藏运输栏时,播放器视图控制器会显示 用户在Siri上向上滑动时,叠加层视图控制器的视图 播放期间遥控。使用此属性设置自定义视图 控制器,而不是安装自己的滑动手势识别器。

https://developer.apple.com/documentation/avkit/avplayerviewcontroller/3229856-customoverlayviewcontroller

您也可以从 26:07 开始观看此视频,以观看实际操作。 https://developer.apple.com/videos/play/wwdc2019/503

P.S。请勿使用var contentOverlayView: UIView? { get }来显示可交互的内容,如官方文档所述:

使用内容覆盖视图添加非交互式自定义视图,例如 视频内容和控件之间的徽标或水印。

https://developer.apple.com/documentation/avkit/avplayerviewcontroller/1615835-contentoverlayview