【问题标题】:Swift AV Player Video Should be AspectFill OR Full ScreenSwift AV 播放器视频应该是 AspectFill 或全屏
【发布时间】:2018-08-21 12:22:54
【问题描述】:

在登录屏幕上,我必须以全分辨率显示背景视频。我可以通过在黑色区域双击下图来做到这一点。

这是我需要的结果。但这不是通过编码完成的。我只是通过双击黑色区域来做到这一点。

这是我的课程代码。

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()
    }
}   
}

任何人都可以建议我如何实现这个所需的结果。我找到了这个解决方案,但很有道理。

     let playerLayer = AVPlayerLayer(player: self.player)        
     playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill;

请建议我更好的方法。 提前致谢。

【问题讨论】:

    标签: ios iphone swift avplayer avplayerviewcontroller


    【解决方案1】:

    这段代码什么都不做:

        let playerLayer = AVPlayerLayer(player: self.player)        
        playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill;
    

    所做的只是创建一个新的播放器层并将其丢弃。

    AVPlayerViewController 已经有一个播放器层!设置 AVPlayerViewController 的视频重力。

        controller.videoGravity = ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      相关资源
      最近更新 更多