Как реализовать QuickTime-подобный видеопоискатель / скруббер для Touch Bar в macOS?

Я занимаюсь разработкой видеоприложения и хочу внедрить средство поиска / очистки видео, как в QuickTime, где оно отображает маленькие пальцы, и я могу искать, плавно скользя пальцем по сенсорной панели, где также отображается текущий прогресс в видео. я видел NSScrubber класс, но он просто отображает горизонтальный список элементов. Я могу создавать ресурсы для определенного времени в видео и отображать их, но мне нужна точная функциональность QuickTime. Это что-то встроенное в панель, или это все, что я должен делать с нуля?

1 ответ

Решение

Я подошел к этому неправильно. У меня был AVPlayer что я контролировал себя со своим слоем, добавленным вручную в иерархию. Я перешел на использование AVPlayerView, который обеспечил функциональность поиска / очистки из коробки. Единственный виновник был в том, что он заменял всю сенсорную панель (где у меня были и другие кнопки тоже).

Я переопределил просмотр контроллера makeTouchBar метод (каждый ресурс указывал на использование метода контроллера окна вместо контроллера представления, который, в моем случае, не работал, и метод даже не вызывался на контроллере окна, хотя сенсорная панель была привязана к контроллеру окна, но это был вызван и отлично работал на контроллере представления) и добавил прокси других элементов:

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

И вуаля! Теперь он отлично работает, как с моими пользовательскими кнопками сенсорной панели, так и с панелью поиска / очистки видеоплеера.

Другие вопросы по тегам