tvOS 隐藏时间栏,同时不丢失音频菜单?
tvOS hiding time bar, while not losing audio menu?
在我的 tvOS 应用程序中,我正在播放一个没有定义长度的纯音频流。我发现的是屏幕底部的时间条显示时间指示器(左侧和右侧)在 0:00 和流播放的时间之间闪烁。
我正在查看的两个选项要么告诉 AVPlayerViewController 不显示时间,要么以某种方式屏蔽时间栏,但不会丢失屏幕顶部的音频菜单。谁能提出合适的解决方案
请注意,我只在使用 tvOS 9.2 的模拟器中对此进行了测试。
我目前的代码:
class StreamPlayerViewController: AVPlayerViewController
var playerItem:AVPlayerItem?
var playerLayer:AVPlayerLayer?
override func viewDidLoad() {
let videoURL = NSURL(string: "http://example.org/aac.m3u")
playerItem = AVPlayerItem(URL: videoURL!)
self.player=AVPlayer(playerItem: playerItem!)
self.playerLayer=AVPlayerLayer(player: player)
self.player?.play()
}
// hides controller, but also lose access to audio menu
override func viewDidAppear(animated: Bool) {
self.playerLayer?.frame=self.view.frame
self.playerLayer?.backgroundColor=UIColor.blackColor().CGColor
self.view.layer.addSublayer(self.playerLayer!)
}
}
我现在的解决方案是扩展 AVPlayer 并覆盖 currentTime 函数:
class CustomAVPlayer : AVPlayer {
override func currentTime() -> CMTime {
return CMTime(value: 0, timescale: 60)
}
}
虽然这不会隐藏时间栏,但它确实确保时间值保持为零,同时不会阻止访问播放设置。
在我的 tvOS 应用程序中,我正在播放一个没有定义长度的纯音频流。我发现的是屏幕底部的时间条显示时间指示器(左侧和右侧)在 0:00 和流播放的时间之间闪烁。
我正在查看的两个选项要么告诉 AVPlayerViewController 不显示时间,要么以某种方式屏蔽时间栏,但不会丢失屏幕顶部的音频菜单。谁能提出合适的解决方案
请注意,我只在使用 tvOS 9.2 的模拟器中对此进行了测试。
我目前的代码:
class StreamPlayerViewController: AVPlayerViewController
var playerItem:AVPlayerItem?
var playerLayer:AVPlayerLayer?
override func viewDidLoad() {
let videoURL = NSURL(string: "http://example.org/aac.m3u")
playerItem = AVPlayerItem(URL: videoURL!)
self.player=AVPlayer(playerItem: playerItem!)
self.playerLayer=AVPlayerLayer(player: player)
self.player?.play()
}
// hides controller, but also lose access to audio menu
override func viewDidAppear(animated: Bool) {
self.playerLayer?.frame=self.view.frame
self.playerLayer?.backgroundColor=UIColor.blackColor().CGColor
self.view.layer.addSublayer(self.playerLayer!)
}
}
我现在的解决方案是扩展 AVPlayer 并覆盖 currentTime 函数:
class CustomAVPlayer : AVPlayer {
override func currentTime() -> CMTime {
return CMTime(value: 0, timescale: 60)
}
}
虽然这不会隐藏时间栏,但它确实确保时间值保持为零,同时不会阻止访问播放设置。