我正在尝试从 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()
})
}
}