At Sign In Screen I've to display background video with full resolution. I'm able to do this by double tapping on below image at black area.
Here is my required result. but this isn't done by coding. I just did this by double tapping on black area.
Here is my Code for this class.
class loginViewController: UIViewController {
@IBOutlet weak var videoView: UIView!
let player = AVPlayer()
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.isNavigationBarHidden = true
let myFileManager = FileManager.default
let mainBundle = Bundle.main
let resourcesPath = mainBundle.resourcePath!
guard let allItemsInTheBundle = try? myFileManager.contentsOfDirectory(atPath: resourcesPath) else {
return
}
let videoName = "login_video"
let videoPath = Bundle.main.path(forResource: videoName, ofType: "mp4")
let videoUrl = URL(fileURLWithPath: videoPath!)
let player = AVPlayer(url: videoUrl)
let controller=AVPlayerViewController()
controller.player=player
let playerLayer = AVPlayerLayer(player: self.player)
playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill;
controller.showsPlaybackControls = false
controller.view.frame = self.view.frame
videoView.addSubview(controller.view)
self.addChildViewController(controller)
player.play()
player.actionAtItemEnd = .none
loopVideo(player: player)
}
func loopVideo(player: AVPlayer) {
NotificationCenter.default.addObserver(forName: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil, queue: nil) { notification in
player.seek(to: kCMTimeZero)
player.play()
}
}
}
can anyone suggest me that how can I achieve this required result. I found this solution but in vein.
let playerLayer = AVPlayerLayer(player: self.player)
playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill;
Please suggest me the better way. Thanks in advance.
This code does nothing:
let playerLayer = AVPlayerLayer(player: self.player)
playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill;
All that does is create a new player layer and throw it away.
The AVPlayerViewController already has a player layer! Set the video gravity of the AVPlayerViewController.
controller.videoGravity = ...