如何在 macOS 中为 Touch Bar 实现类似 QuickTime 的视频 seeker/scrubber?

How to implement QuickTime-like video seeker/scrubber for Touch Bar in macOS?

我正在开发一个视频应用程序,我想实现一个视频 seeker/scrubber 就像在 QuickTime 中一样,它显示小拇指,我可以通过在 Touch Bar 上平滑地滑动我的手指来搜索它也显示视频的当前进度。我看过 NSScrubber class 但它只显示一个水平项目列表。我可以为视频中的特定时间生成资产并显示它们,但我需要 QuickTime 具有的确切功能。那个栏是内置的,还是我应该从头开始构建的完全自定义的东西?

我用错误的方式接近它。我有一个 AVPlayer,我通过手动将其层添加到层次结构中来控制自己。我已经改用 AVPlayerView,它提供了开箱即用的 seek/scrub 功能。唯一的罪魁祸首是它取代了整个触摸条(我也有一些其他按钮)。

我已经重写了视图控制器的 makeTouchBar 方法(每个资源都指出使用 window 控制器的方法而不是视图控制器的方法,在我的例子中,它不起作用并且该方法无效即使触摸条绑定到 window 控制器,它甚至调用了 window 控制器,但它被调用并在视图控制器上完美运行)并添加了其他项目代理:

-(NSTouchBar *)makeTouchBar{
    NSTouchBar *bar = self.view.window.windowController.touchBar;
    bar.defaultItemIdentifiers = [bar.defaultItemIdentifiers.mutableCopy arrayByAddingObject:@"NSTouchBarItemIdentifierOtherItemsProxy"];
    return bar;
}

瞧!它现在完美地工作,我的自定义触摸栏按钮 视频播放器的 seek/scrub 栏。