从 UITableviewCell 放大和缩小视频(YTPlayerView iOS)

时间:2021-02-24 11:32:13

标签: swift uitableview ytplayerview

我正在尝试从 UITableviewCell 放大和缩小视频以覆盖全视图以及从全视图到具有相同正在运行的视频的后表视图,我已经设法放大正在运行的视频但在缩小时视频播放器在上不可见表格视图单元格。

要放大,我正在从 tableview 调用视图控制器方法,如下代码所示:

var viewController:ViewController!

@IBAction func zoomIn(_ sender: UIButton){
        viewController?.animateVideoView(videoPlayerView: self.playerView)
    }

ViewControllers 方法如下:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
    let cell : LearnTableViewVideoCell = tableView.dequeueReusableCell(indexPath: indexPath)
    cell.delegate = self
    cell.viewController = self
    cell.populateCell(index:indexPath.row,status: videoLoadStatus["\(indexPath.row)"] ?? false,videoId: videoIds[indexPath.row])
    return cell
}
var zoomPlayerView = PlayerView()
    var videoPlayerView:PlayerView?
    func animateVideoView(videoPlayerView:PlayerView){
        self.videoPlayerView = videoPlayerView
    
    if let startingFrame = videoPlayerView.superview?.convert(videoPlayerView.frame, to: nil){
        //videoPlayerView.alpha = 0
        
        zoomPlayerView.backgroundColor = .black
        zoomPlayerView.frame = startingFrame
        zoomPlayerView = videoPlayerView
        zoomPlayerView.contentMode = .scaleAspectFill
        zoomPlayerView.clipsToBounds = true
        view.addSubview(zoomPlayerView)
        
        zoomPlayerView.addGestureRecognizer(UITapGestureRecognizer(target: self, action:  #selector(ViewController.zoomOut(_:))))
        UIView.animate(withDuration: 0.75) { () -> Void in
            let height = (self.view.frame.width / startingFrame.width) * startingFrame.height
            
            let y = self.view.frame.height / 2 - height / 2
            
            self.zoomPlayerView.frame = CGRect(x: 0, y: y, width: self.view.frame.width, height: height)
            
            
        }
    }
}

@objc  func zoomOut(_ sender: UITapGestureRecognizer){
    if let startingFrame = videoPlayerView!.superview?.convert(videoPlayerView!.frame, to: nil){
        UIView.animate(withDuration: 0.75, animations: { () -> Void in
            self.zoomPlayerView.frame = startingFrame
            self.videoPlayerView = self.zoomPlayerView
        }, completion: {(didComplete) -> Void in
            self.zoomPlayerView.removeFromSuperview()
        })
          
    }
}

Normal Listing of video

Zoom in working fine

When I Zoom out it PlayerView is not visible

0 个答案:

没有答案
相关问题