Ответ 1
Я столкнулся с этим же вопросом сам. Я обнаружил, что, к сожалению, единственный способ сделать это, кроме переключения на QTKit, - создать отдельный слой субтитров (CATextLayer) и соответствующим образом разместить его в качестве подуровня слоя игрока. Идея состоит в том, что вы настраиваете периодического наблюдателя времени для запуска каждую секунду или около того и обновляете субтитры вместе с (и это необязательно) некоторый элемент пользовательского интерфейса, который у вас есть, который показывает, какое время прошло в видео.
Я создал базовый класс парсера файлов SubRip (.srt); вы можете найти его здесь: https://github.com/sstigler/SubRip-for-Mac. Обязательно проверьте вики для документации. Класс доступен в соответствии с условиями лицензии BSD.
Еще одна проблема, с которой вы можете столкнуться, заключается в том, как динамически настраивать высоту CATextLayer для учета различной длины субтитров и различной ширины содержащего представления (если вы решите сделать его изменяемым пользователем). Я нашел отличный подкласс CALayoutManager, который делает это, и сделал некоторые изменения к нему, чтобы заставить его работать для того, что я пытался: https://github.com/sstigler/height-for-width.
Надеюсь, это поможет.