Как сделать Twilio удаленным просмотр видео «TVIVideoView» в полноэкранном режиме в iOS - PullRequest
0 голосов
/ 25 апреля 2018

Я использую Twilio для видеозвонков, и он работает нормально, но единственная проблема не в том, чтобы настроить полноэкранный режим для удаленного видео. Ниже приведен способ создания удаленной настройки видео Twilio в их QuickStart Project .

Версия Xcode: 9.3 Версия Swift: 4.1

func setupRemoteVideoView() {
    // Creating `TVIVideoView` programmatically
    self.remoteView = TVIVideoView.init(frame: CGRect.zero, delegate:self)
    self.view.insertSubview(self.remoteView!, at: 0)

    // `TVIVideoView` supports scaleToFill, scaleAspectFill and scaleAspectFit
    // scaleAspectFit is the default mode when you create `TVIVideoView` programmatically.
    self.remoteView!.contentMode = .scaleAspectFit;

    let centerX = NSLayoutConstraint(item: self.remoteView!,
                                     attribute: NSLayoutAttribute.centerX,
                                     relatedBy: NSLayoutRelation.equal,
                                     toItem: self.view,
                                     attribute: NSLayoutAttribute.centerX,
                                     multiplier: 1,
                                     constant: 0);
    self.view.addConstraint(centerX)
    let centerY = NSLayoutConstraint(item: self.remoteView!,
                                     attribute: NSLayoutAttribute.centerY,
                                     relatedBy: NSLayoutRelation.equal,
                                     toItem: self.view,
                                     attribute: NSLayoutAttribute.centerY,
                                     multiplier: 1,
                                     constant: 0);
    self.view.addConstraint(centerY)
    let width = NSLayoutConstraint(item: self.remoteView!,
                                   attribute: NSLayoutAttribute.width,
                                   relatedBy: NSLayoutRelation.equal,
                                   toItem: self.view,
                                   attribute: NSLayoutAttribute.width,
                                   multiplier: 1,
                                   constant: 0);
    self.view.addConstraint(width)
    let height = NSLayoutConstraint(item: self.remoteView!,
                                    attribute: NSLayoutAttribute.height,
                                    relatedBy: NSLayoutRelation.equal,
                                    toItem: self.view,
                                    attribute: NSLayoutAttribute.height,
                                    multiplier: 1,
                                    constant: 0);
    self.view.addConstraint(height)
}

1 Ответ

0 голосов
/ 25 апреля 2018

Вот ваш код немного прибрано:

  func setupRemoteVideoView() {
        // Creating `TVIVideoView` programmatically
        self.remoteView = TVIVideoView.init(frame: CGRect.zero, delegate: self)
        self.view.insertSubview(self.remoteView, at: 0)

        // `TVIVideoView` supports scaleToFill, scaleAspectFill and scaleAspectFit
        // scaleAspectFit is the default mode when you create `TVIVideoView` programmatically.

        self.remoteView.contentMode = .scaleAspectFit
        remoteView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        remoteView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
        remoteView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
        remoteView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
        view.setNeedsLayout()
    }

Вот важные изменения:

    remoteView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    remoteView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    remoteView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    remoteView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
    view.setNeedsLayout()

Но так как эти изменения настолько велики, япокажет вам, как он вписывается в контроллер представления (это компилируется)(У Apple отличная документация, включая книгу по Swift.) Autolayout значительно улучшился с тех пор, как код, предоставленный Twilio, был актуальным.Якоря значительно упрощают процесс.Ключевые моменты, которые следует помнить при автоматическом размещении:

  • представление должно быть добавлено к родителю
  • необходимо активировать ограничения
  • должно быть достаточноограничения для системы для расчета высоты, ширины и начальной точки.(простой способ запомнить, что ваши ограничения в конечном итоге превращаются в фрейм (CGRect) системой

    - я немного упрощаю, но это суть. Если что-то из этогонепонятно, дайте мне знать, и я отредактирую свой ответ. 10

...