【问题标题】:Dismiss YTPlayerView() and return to UITableView关闭 YTPlayerView() 并返回 UITableView
【发布时间】:2019-10-22 07:36:35
【问题描述】:

我的容器视图中嵌入了一个 UITableView,它以模态方式呈现在当前上下文中。视频加载正常,但我无法简单地关闭视频并返回我的 UITableView。我希望能够关闭视频并简单地返回原始 tableView 的选项。

class MotivationViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, YTPlayerViewDelegate {

  override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(playerView)
    playerView.delegate = self

    search()
    self.tableView.delegate = self
    self.tableView.dataSource = self
    print(dataArray)
    tableView.register(YouTubeTableCell.self, forCellReuseIdentifier: cellID)
    view.addSubview(containerView)
    view.addSubview(titleLabel)

    containerView.anchor(top: view.topAnchor, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor, paddingTop: 200, paddingLeft: 20, paddingBottom: 200, paddingRight: 20, width: 0, height: 0)

    containerView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    containerView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

    containerView.addSubview(tableView)
    tableView.translatesAutoresizingMaskIntoConstraints = false
    tableView.layer.cornerRadius = 20
    tableView.anchor(top: containerView.topAnchor, left:         containerView.leftAnchor, bottom: containerView.bottomAnchor, right: containerView.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
    titleLabel.anchor(top: nil, left: nil, bottom: containerView.topAnchor, right: nil, paddingTop: 0, paddingLeft: 0, paddingBottom: 10, paddingRight: 0, width: 0, height: 0)
    titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
  }

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: cellID, for: indexPath) as! YouTubeTableCell

    let item = titlesArray[indexPath.row]
    cell.titleLabel.text = item
    let imageURL = URL(string: thumbnailArray[indexPath.row])
    cell.thumbnailImageView.sd_setImage(with: imageURL)
    return cell
  }

  func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let item = videoID[indexPath.row]
    view.addSubview(playerView)
    playerView.layer.cornerRadius = 20
    playerView.anchor(top: containerView.topAnchor, left: containerView.leftAnchor, bottom: containerView.bottomAnchor, right: containerView.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
    let playerVars = ["playsinline": 1] // 0: will play video in fullscreen
    self.playerView.load(withVideoId: item, playerVars: playerVars)
  }

func dismiss() {

    self.playerView.removeFromSuperview()

  }

}

【问题讨论】:

  • 好的,那你想怎么做呢?
  • 我认为在视频上向下滑动会很理想,或者如果视频是全屏的,请按视频上的 x 按钮。
  • 请显示您的解雇操作代码
  • 如果触摸容器视图的背景以返回主页,我正在使用我在以前的视图中添加的这个。但我不确定我会在哪里添加它让 playerView 关闭。
  • @soRazor - 只需将self.view.removefromSuperView(playerView) 的代码添加到dismiss 操作中并同时隐藏这个self.dismiss(animated: false, completion: nil)

标签: ios swift youtubeplayer


【解决方案1】:

我最终添加了一个关闭按钮并将其限制在我的 containerView 的右上角,并在视频关闭后将其设置为隐藏。

  @objc func dismissVideo() {
    self.playerView.removeFromSuperview()
    closeButton.isHidden = true

}


func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {


    let item = videoID[indexPath.row]
    view.addSubview(playerView)
     playerView.layer.cornerRadius = 20
    playerView.anchor(top: containerView.topAnchor, left: containerView.leftAnchor, bottom: containerView.bottomAnchor, right: containerView.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
    let playerVars = ["playsinline": 1] // 0: will play video in fullscreen
    self.playerView.load(withVideoId: item, playerVars: playerVars)
    closeButton.addTarget(self, action: #selector(dismissVideo), for: .touchUpInside)
    closeButton.isHidden = false
}

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 2017-07-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多