Видео "плеере АВ" не сторона по горизонтали


Создание моего первого приложения и попытка подогнать фоновое видео по горизонтали.

Ниже приведен код, который я использую

override func viewDidLoad()
{
    super.viewDidLoad()

    let URL = Bundle.main.url(forResource: "homedocapp", withExtension: "mp4")

    Player = AVPlayer.init(url: URL!)

    PlayerLayer = AVPlayerLayer(player: Player)
    PlayerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
    PlayerLayer.frame = self.view.frame; PlayerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
    PlayerLayer.zPosition = -1

    Player.actionAtItemEnd = AVPlayerActionAtItemEnd.none

    self.view.layer.addSublayer(PlayerLayer)

    Player.play()

    view.layer.insertSublayer(PlayerLayer, at: 0)

    NotificationCenter.default.addObserver(self, selector: #selector(playerItemReachEnd(notification:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: Player.currentItem)


}

Горизонтальный дисплей AVPlayer

Спасибо за авансы

3 2

3 ответа:

Когда вызывается 'viewDidLoad', вид все еще может иметь неправильный размер. Таким образом, ваш игрок также будет иметь неправильный размер. Попробуйте переместить код в функцию 'viewDidLayoutSubviews':

override func viewDidLayoutSubviews() 
{
    super.viewDidLayoutSubviews()

    // Set up your player layer instance here
}

Вы должны изменить размер плеера с ограничениями, когда он инициализируется в viewDidLoad, cause self.вид.тогда фрейм не верен.

Разлитый экран

При вращении я получаю разделенный экран.

class ViewController: UIViewController  {

var Player: AVPlayer!
var PlayerLayer: AVPlayerLayer!



override func viewDidLayoutSubviews()
{
    super.viewDidLayoutSubviews()

    let URL = Bundle.main.url(forResource: "homedocapp", withExtension: "mp4")

    Player = AVPlayer.init(url: URL!)

    PlayerLayer = AVPlayerLayer(player: Player)
    PlayerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
    PlayerLayer.frame = view.layer.frame

    Player.actionAtItemEnd = AVPlayerActionAtItemEnd.none


    Player.play()

    view.layer.insertSublayer(PlayerLayer, at: 0)

    NotificationCenter.default.addObserver(self, selector: #selector(playerItemReachEnd(notification:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: Player.currentItem)


}

Изучение трудного пути