我正在尝试设置一个 NSView,它将覆盖在 AVFoundation 正在播放的视频之上。我真的只是想创建一些看起来类似于原生 quicktime 播放器的东西。我正在尝试在 OS X 应用程序上执行此操作。
我设置了一个 NSView,它有两个子视图:一个播放视频的视图和一个包含控件的视图。每当我开始播放视频时,控件视图都会被推到视频播放视图后面,从而使控件视图无用。
我认为问题与覆盖视图层次结构中同一级别的两个子视图有关。这个问题将导致使控件视图成为视频播放视图的子视图的解决方案。问题是要使用 AVFoundation 播放视频,视频播放视图必须成为图层托管视图,这会阻止它具有子视图。
我试图解决问题的事情:
- 用于对视图
addSubview:positioned:relativeTo:
重新排序。 - 支持超级视图和控件视图层。
我可能错误地使用了这些解决方案,所以如果您认为它们应该起作用,请告诉我。
这就是我设置视频播放视图的方式。
self.playerItem = [AVPlayerItem playerItemWithAsset:self.asset];
[self.playerItem addObserver:self forKeyPath:@"status"
options:0 context:&ItemStatusContext];
self.player = [AVPlayer playerWithPlayerItem:self.playerItem];
self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
[self.playerView setLayer:self.playerLayer];
[self.playerView setWantsLayer:YES];
这似乎是某人想要为视频播放做的常见事情,所以如果有人知道解决方案,请告诉我。谢谢!