выбор устройства в раскадровке, определяющий разницу в интерфейсе для iphone x и предыдущих версий - видеоплеер: ios swift - PullRequest
0 голосов
/ 01 марта 2019

Эй, ребята, у меня странная проблема - я играю видео в видеоплеере.Код, используемый для того же самого:

let url = URL(string: "xxxxxxxxxx.mp4")
    player = AVPlayer(url: url!)
    playerLayer = AVPlayerLayer(player: player)
    playerLayer.videoGravity = .resize
    // make the layer the same size as the container view
    playerLayer.frame = self.viewVidioPlayer.layer.bounds

    self.viewVidioPlayer.layer.addSublayer(playerLayer)

    self.observer = player!.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, preferredTimescale: 1), queue: DispatchQueue.main) { (CMTime) -> Void in
        if self.player!.currentItem?.status == .readyToPlay {

            if let currentItem = self.player!.currentItem {
                let duration = currentItem.asset.duration
                print("Total Duration - \(duration)")
            }


            let time : Float64 = CMTimeGetSeconds(self.player!.currentTime());
            //print("\(time)")
            print("Intro Video stress Overlay - \(time)")

            let playbackLikelyToKeepUp = self.player?.currentItem?.isPlaybackLikelyToKeepUp
            if playbackLikelyToKeepUp == false {
                //print("Here start the activity indicator inorder to show buffering")
            }else{
                //print("stop the activity indicator")
            }
        }
    }

В раскадровке у меня есть мой просмотр видео с ограничениями на суперпредставление для верхнего, нижнего, ведущего, трейлинга, и я играю видео.Проблема здесь странная: когда я выбираю раскадровку и выбираю iPhone 7 - он хорошо работает для iPhone 7, но не для iPhone x, а когда я выбираю iPhone X и запускаю в iPhone X, он работает хорошо, но не в iPhone 7. Там появляются черные пробелыПо сторонам.Может кто-нибудь объяснить, в чем может быть проблема?Любая помощь будет заметна.

1 Ответ

0 голосов
/ 08 мая 2019

Эта проблема возникает из-за safe area iPhone X. Попробуйте установить ограничения на superview, а не safe area.

IЯ заметил, что в одном из моих проектов эта проблема также может возникнуть, если соотношение сторон вашего видео не совпадает с форматом iPhone X. Чтобы исправить это, у меня были разные версии видео, разработанные с соответствующими соотношениями сторон устройств.У меня была одна версия для iPad, одна версия для iPhone без метки и одна версия для iPhone с меткой.Также попытайтесь установить для вашего videoGravity значение AVLayerVideoGravity.resizeAspect

Даже если вы установите вид проигрывателя в соответствии с границами суперпредставления, кадр слоя player будет соответствовать соотношению сторон видео.

Вы можете решить эту проблему, попытавшись масштабировать слой видео до размера кадра.Но это приведет к тому, что видео будет либо растягиваться по ширине, либо растягиваться по высоте, и это будет выглядеть странно.

...