是否可以覆盖 pressesBegan() 以最小化 tvOS 中的全屏 AVPlayer?
Is it okay to override pressesBegan() to minimize a fullscreen AVPlayer in tvOS?
我的 tvOS 应用程序的一部分 UI 是一个最小化的(400 像素宽度)AVPlayer
和一个按钮,通过将其框架设置为window 边界:
playerController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)
.
我无法将 'close fullscreen' 按钮添加到全屏 avplayer(这将是最好的解决方案),这就是为什么我要覆盖 pressesBegan()
-方法的原因:
override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?)
{
guard presses.first?.type == UIPressType.Menu else
{
super.pressesBegan(presses, withEvent: event)
return
}
// If not minimized, minimize it
if playerController.view.frame.size.width != 400
{
playerController.view.frame = minimizedVideoBounds
}
}
问题
这是实现我的用户体验目标的可能、安全和干净的原因,还是应该不惜一切代价避免的肮脏黑客?
简而言之:不,不是。我有奇怪的副作用。我认为我们应该使用 AVPlayer
或 AVPlayerController
作为全屏元素,我们应该避免子类化这些东西。
如果有人足够聪明来处理这个问题:请告诉我怎么做。
我的 tvOS 应用程序的一部分 UI 是一个最小化的(400 像素宽度)AVPlayer
和一个按钮,通过将其框架设置为window 边界:
playerController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)
.
我无法将 'close fullscreen' 按钮添加到全屏 avplayer(这将是最好的解决方案),这就是为什么我要覆盖 pressesBegan()
-方法的原因:
override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?)
{
guard presses.first?.type == UIPressType.Menu else
{
super.pressesBegan(presses, withEvent: event)
return
}
// If not minimized, minimize it
if playerController.view.frame.size.width != 400
{
playerController.view.frame = minimizedVideoBounds
}
}
问题
这是实现我的用户体验目标的可能、安全和干净的原因,还是应该不惜一切代价避免的肮脏黑客?
简而言之:不,不是。我有奇怪的副作用。我认为我们应该使用 AVPlayer
或 AVPlayerController
作为全屏元素,我们应该避免子类化这些东西。
如果有人足够聪明来处理这个问题:请告诉我怎么做。