Добавление зацикленного фона mp4 для регистрации приложения iOS - PullRequest
1 голос
/ 18 марта 2019

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

import UIKit

import AVFoundation

class ViewController: UIViewController {

  var avPlayer: AVPlayer!
  var avPlayerLayer: AVPlayerLayer!
  var paused: Bool = false

  override func viewDidLoad() {
    super.viewDidLoad()
    let theURL = Bundle.main.url(forResource: "Yeet", withExtension: "mp4")

    avPlayer = AVPlayer(url: theURL!)
    avPlayerLayer = AVPlayerLayer(player: avPlayer)
    avPlayerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
    avPlayer.volume = 0
    avPlayer.actionAtItemEnd = AVPlayer.ActionAtItemEnd.none

    avPlayerLayer.frame = view.layer.bounds
    view.backgroundColor = UIColor.clear;
    view.layer.insertSublayer(avPlayerLayer, at: 0)

    NotificationCenter.default.addObserver(self, selector: Selector(("playerItemDidReachEnd:")), name:       NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: avPlayer.currentItem)
  }

    @objc func playerItemDidReachEnd(notification: NSNotification) {
    let p: AVPlayerItem = notification.object as! AVPlayerItem
      p.seek(to: CMTime.zero)
  }

  override func viewDidAppear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    avPlayer.play()
    paused = false
  }

  override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    avPlayer.pause()
    paused = true
  }
  override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
  }

}

1 Ответ

0 голосов
/ 18 марта 2019

Вы пытались использовать AVPlayerLooper ?

Похоже, у @iwasrobbed есть решение для устройств iOS 10+.Вот пример кода:

private var looper: AVPlayerLooper?

...

let queuePlayer = AVQueuePlayer(playerItem: item)
looper = AVPlayerLooper(player: queuePlayer, templateItem: item)
videoPlayerLayer.player = queuePlayer

Чтобы отключить цикл после выхода из представления, добавьте этот фрагмент кода в конце:

looper?.disableLooping()
...