2017-01-22 4 views
0

У меня есть AVPlayer, и я использую его как фон в своем UIView как эстетический. Для инициализации и создать его экземпляр, яРежимы содержания AVPlayer

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    guard let path = Bundle.main.path(forResource: "Background", ofType:"mp4") else { 
     debugPrint("Background.mp4 not found") 
     return 
    } 

    let player = AVPlayer(url: URL(fileURLWithPath: path)) 
    let playerLayer = AVPlayerLayer(player: player) 

    playerLayer.frame = self.view.bounds 
    player.actionAtItemEnd = .none 
    player.volume = 0.0 

    //chage content mode ** TODO ** 

    self.view.layer.addSublayer(playerLayer) 
    player.play() 

} 

Когда я запускаю это, видео играет так же, как и ожидалось, однако AVPlayer устанавливает режим содержания в fitToWidth как по умолчанию. Я искал все методы player и playerLayer для некоторого типа метода при изменении типа содержимого, но безрезультатно.

Что я хочу, а не fitToWidth Я хотел бы fitToHeight.

Любые мысли? Спасибо, что посмотрели!

ответ

1

Я могу придумать какой-нибудь действительно простой способ сделать это. Когда ваш видеоконтент извлекается, используйте метод videoRect в AVPlayerLayer, чтобы извлечь кадр видеоизображения. Затем измените размер вашего изображения в соответствии с размером изображения, чтобы высота увеличивалась до такой степени, что вы хотите, а ширина пропорциональна отношению высоты видео к высоте обзора.

Смежные вопросы