-1

Я новичок в Swift и потоковой передаче видео. Я пытаюсь воспроизвести видео в AppleTV. Кто-нибудь попытался добавить субтитры с AVPlayerViewController в swift из внешнего srt-файла. Я пытаюсь сделать то же самое с помощью кода отсюда: https://github.com/mhergon/MPMoviePlayerController-Subtitles.Отображение субтитров с использованием AVPlayerViewController с быстрым

Я изменил код, чтобы удовлетворить мои требования, но он бросает исключение:

NSInvalidArgumentException «причина:» Невозможно разобрать ограничение формат: Невозможно интерпретировать „|“ потому что связанный вид не имеет супервизора H: | - (20) - [l] - (20) - |

На данный момент в файле Subtitles.swift:

var constraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|-(20)-[l]-(20)-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: ["l" : subtitleLabel!]) 
    subtitleContainer?.addConstraints(constraints) 
+0

Можете ли вы показать конфигурацию своего вида на раскадровке или xib? Или просмотреть элемент списка, который вы задали в коде? –

ответ

0

Сообщение об ошибке жалуется, что нет SuperView. Если посмотреть на источник, я бы предположил, что контейнер неправильно установлен. Это приводит к тому, что subtitleLabel не является дочерним элементом супер-представления, и это приводит к сбою ограничения.

+0

Да, вы правильно используете контейнер в getContainer(). Я не уверен, почему это не установлено. Я не понимаю, как это c.tag == 1006 истинно при использовании MPMoviePlayerController, а не при использовании AVPLayerViewController. – Enmud

+0

@Enmud Вы можете показать свой код, который определяет ваши взгляды? –

+0

Спасибо за ваш ответ. В этом ниже указанном контейнере субтитров. Но я не нашел нигде тег, который указан в приведенном ниже коде. Вы можете проверить тот же код в репозитории github (ссылка в вопросе). частный FUNC getContainer() { для в view.subviews { для Ь в a.subviews { для с в b.subviews { , если c.tag == 1006 { subtitleContainer = с }} } } } – Enmud